品牌网站设计制作找哪家,品牌营销服务,iis5 新建网站,潍坊专业网站建设目录 1. 简介2. 安装和导入Numpy3. ndarray 对象4. 基本运算5. 索引、切片和迭代6. 条件和布尔数组7. 变换形状8. 操作数组 1. 简介
数据分析的流程概括起来主要是#xff1a;读写、处理计算、分析建模和可视化4个部分。
Numpy 是Python 进行科学计算#xff0c;数据分析时… 目录 1. 简介2. 安装和导入Numpy3. ndarray 对象4. 基本运算5. 索引、切片和迭代6. 条件和布尔数组7. 变换形状8. 操作数组 1. 简介
数据分析的流程概括起来主要是读写、处理计算、分析建模和可视化4个部分。
Numpy 是Python 进行科学计算数据分析时所用到的一个基础库。它是大量Python数据和科学计算包的基础如Pandas库就用到了Numpy。
NumpyNumerical Python是Python的一个扩展程序库支持大量的维度数组与矩阵运算此外针对数组运算也可以提供大量的数据函数库。
Numpy 是一个运行速度非常快的数学库主要用于数组计算包括以下方面
一个强大的N维数组对象ndarray。广播功能函数。整合C/C/Fortran代码的工具。线性代数、傅立叶变换、随机数生成功能。
Numpy 通常与 ScipyScientific Python和 Matplotlib绘图库一起使用这种组合广泛用于替代MatLab是一个强大的科学计算环境有助于通过Python学习数据科学或者机器学习。
2. 安装和导入Numpy
安装、导入和使用Numpy
# 安装Numpy
Windows 按住winR 输入 cmdMac 打开Terminal
pip install numpy import numpy as np # 导入numpy并取别名
print(np.__version__) # 如果显示版本信息说明安装和导入成功1.22.1
print(np.eye(3)) # 使用eye(n) 生成对角矩阵
# 输出[[1. 0. 0.][0. 1. 0.][0. 0. 1.]]3. ndarray 对象
ndarray 是 Numpy 库的基础是一种由同质元素构成的多维数组。元素数量是事先指定好的同质指的是所有元素的类型和大小都相同。数据类型由dtypedata-type数据类型的Numpy对象指定。每个ndarray只有一种dtype类型。
数组的维数和元素的数量由数组的形状shape确定数组的形状由N个正整数组成的元组指定元组的每个元素对应每一维的大小。数组的维统称为轴axes轴的数量被称作秩rank。
Numpy 数组的另一个特点是大小固定在创建数组时指定大小然后就不再发生改变。这与Python的列表有所不同列表的大小时可以改变的。
1) 创建ndarray对象
使用array()通过嵌套列表或元组定义为多维数组。
numpy.array(object,dtypeNone,copyTrue,orderNone,subokFalse,ndmin0)参数说明如下
object数组或嵌套的数列。dtype数组元素的数据类型可选。copy对象是否需要复制可选。order创建数组的样式C为行方向F为列方向A为任意方向默认。subok默认返回一个与基类类型一致的数组。ndmin指定生产数组的最小维度。
import numpy as np # 导入numpy并取别名
a np.array([1,2,3]) # 定义一维 ndarray 对象
b np.array([[1,2],[3,4]]) # 定义多维 ndarray 对象
print(a) # 输出 [1 2 3]
print(b) 输出
[[1 2][3 4]]print(b.itemsize) # 使用itemsize属性可以获取每个元素的大小以字节为
print(b.data) # 使用data属性表示包含数组实际元素的缓冲区使用empty()函数可以创建一个指定形状shape、数据类型dtype且未初始化的数组。
numpy.empty(shape,dtypefloat,orderC)参数说明如下
shape数组形状。dtype数据类型可选。order有‘C’和’F’两个选项分别代表行优先和列优先在计算机内存中存储元素的顺序。
import numpy as np # 导入numpy并取别名
x np.empty([2,2],dtypeint)
print(x)
输出
[[1 2][3 4]]使用zeros()可以创建指定大小的数组数组元素初始为0语法格式和empty()相同。
import numpy as np # 导入numpy并取别名
x np.zeros([2,2],dtypeint)
print(x)
输出
[[0 0][0 0]]使用ones()可以创建指定大小的数组数组元素初始为1语法格式和empty()相同。
import numpy as np # 导入numpy并取别名
x np.ones([2,2],dtypeint)
print(x)
输出
[[1 1][1 1]]2) 数据类型
Numpy 支持的数据类型比Python内置的类型要多基本上与C语言的数据类型对应具体如下
bool布尔型数据类型True或Falseint默认的整数类型类似于C语言中的long、int32或int64intc与C的int类型一样一般是int32或int64intp用于索引的整数类型类似于C的ssize_t一般情况下仍然是int32或int64int8字节-128127int16整数-3276832767int32整数-21474836482147483647int64整数uint8无符号整数0255uint16无符号整数065535uint32无符号整数04294967295uint64无符号整数floatfloat64类型的简写float16半精度浮点数包括1个符号位5个指数位10个尾数位float32单精度浮点数包括1个符号位8个指数位23个尾数位float64双精度浮点数包括1个符号位11个指数位52个尾数位complexcomplex128类型的简写即128位复数complex64复数表示双32位浮点数实数部分和虚数部分complex128复数表示双64位浮点数实数部分和虚数部分
3) 数组属性
Numpy中每一个线性的数组称为一个轴axis也就是维度dimension。二维数组相当于两个一维数组其中一个数组中每个元素又是一个一维数组。包含的主要属性如下
ndarray.ndim秩即轴的数量或维度的数量。ndarray.shape数组的形状对于矩阵表示n行m列。ndarray.size数组元素的总个数相当于n*m的值。ndarray.dtypendarray对象的元素类型。ndarray.itemsizendarray对象中每个元素的大小以字节为单位。ndarray.flagsndarray对象中每个元素的内存信息。ndarray.realndarray元素的实部。ndarray.imagndarray元素的虚部。ndarray.data包含实际数组元素的缓冲区。一般通过数组的索引获取元素所以通常不需要使用这个属性。
import numpy as np # 导入numpy并取别名
b np.array([[1,2],[3,4]])
print(b)
输出
[[1 2][3 4]]print(type(b)) # class numpy.ndarray
print(b.dtype) # int64
print(b.ndim) # 2
print(b.size) # 4
print(b.shape) # (2, 2)4. 基本运算
1) 算术运算
import numpy as np
a np.array([1,2,3,4])
print(a2) # [3 4 5 6]
print(a-2) # [-1 0 1 2]
print(a*2) # [2 4 6 8]
print(a/2) # [0.5 1. 1.5 2. ]
b np.array([2,3,4,5])
print(b-a) # [1 1 1 1]2) 矩阵积
dot()函数能够返回两个数组的点积。一维数组位置相同的元素相乘然后再求和二维数组矩阵之间的运算则得到的是矩阵积。 a.dot(b)与np.dot(a,b) 效果相同矩阵积计算不遵循交换律也就是np.dot(a,b)和np.dot(b,a)得到的结果不一样。 import numpy as np
a np.array([1,2,3,4])
b np.array([4,5,6,7])
print(np.dot(a,b)) # 60
c np.array([[1,2],[3,4]])
d np.array([[5,6],[7,8]])
print(np.dot(c,d))
输出
[[19 22][43 50]]print(np.dot(d,c))
输出
[[23 34][31 46]]3) 自增和自减
使用和-运算符可以实现数组自增和自减。
import numpy as np
a np.array([[1,2],[3,4]])
a 1
print(a)
输出
[[2 3][4 5]]4) 通用函数
三角函数等很多数学运算符符合通用函数的定义计算平方根的sqrt()函数、用来取对数的log()函数和正弦函数sin()。
import numpy as np
a np.array([[1,2],[3,4]])
print(np.sin(a))
输出
[[ 0.84147098 0.90929743][ 0.14112001 -0.7568025 ]]5) 聚合函数
聚合函数是指对一组值进行操作返回一个单一值作为结果的函数。
import numpy as np
a np.array([[1,2],[3,4]])
print(a.sum()) # 10
print(a.min()) # 1
print(a.max()) # 4
print(a.std()) # 1.1180339887498955. 索引、切片和迭代
1) 索引
访问单个元素用法与list类似。
import numpy as np
a np.array([1,2,3,4])
print(a[2]) # 3
b np.array([[1,2],[3,4]])
print(b[1,1]) # 4
print(b[-1,-1]) # 42) 切片
切片抽取数组的一部分元素并生成新数组。
import numpy as np
a np.array([range(0,10),range(10,20),range(20,30),range(40,50)])
print(a[1:5,1:7]) # 截取连续局部矩阵
输出
[[11 12 13 14 15 16][21 22 23 24 25 26][41 42 43 44 45 46]]print(a[[1,3],1:7])
输出
[[11 12 13 14 15 16][41 42 43 44 45 46]]3) 迭代
对于一维数组可以使用for进行迭代对于二维数组可以使用嵌套的for进行迭代外层for扫描行内层for扫描列。
import numpy as np
a np.array([[1,2],[3,4]])
for row in a:for col in row:print(col,end )
print( ) # 换行for item in a.flat: # flat 表示数组元素迭代器print(item,end )6. 条件和布尔数组
使用条件表达式和布尔运算符有选择地抽取元素。
import numpy as np
a np.random.random((4,4))
print(a)
输出
[[0.49954069 0.42753987 0.25914236 0.1253001 ][0.48690952 0.35854975 0.07134125 0.2598206 ][0.15511689 0.8465675 0.9928091 0.40122818][0.21870776 0.97000971 0.92714403 0.97068106]]print(a[a0.5])
输出
[0.49954069 0.42753987 0.25914236 0.1253001 0.48690952 0.358549750.07134125 0.2598206 0.15511689 0.40122818 0.21870776]7. 变换形状
使用reshape()函数可以改变数组的形状该函数返回一个新数组。
import numpy as np
a np.random.random(12)
print(a)
print(a.reshape(3,4))
a.shape (2,6) # 直接将新形状的元组赋值给shape属性
print(a)改变数组形状的操作是可逆的使用ravel()函数可以把二维数组再变回一维数组。甚至直接改变数组shape属性的值。使用transpose()函数可以实现行、列位置的矩阵转置。
import numpy as np
a np.array([[1,2],[3,4]])
b a.transpose() # 行列位置转置
b输出
array([[1, 3],[2, 4]])8. 操作数组
1) 合并数组
合并数组有以下3种方法
np.concatenate合并维数相同的两个数组。np.vstack垂直方向合并一维数组和二维数组。np.hstack水平方向合并一维数组和二维数组。
a np.ones((2,2))
b np.zeros((2,2))
print(np.vstack((a,b))) # 垂直方向输出
[[1. 1.][1. 1.][0. 0.][0. 0.]]print(np.hstack((a,b))) # 水平方向输出
[[1. 1. 0. 0.][1. 1. 0. 0.]]column_stack()和row_stack()两个函数把一维数组作为列或行入栈结构以形成一个新的二维数组。
import numpy as np
a np.array([1,2,3])
b np.array([4,5,6])
d np.column_stack((a,b))
print(d)输出
[[1 4][2 5][3 6]]e np.row_stack((a,b))
print(e)输出
[[1 2 3][4 5 6]]2) 切分数组
切分数组有以下3种方法
np.split分割。np.vsplit垂直分割。np.hsplit水平分割。
import numpy as np
a np.arange(16).reshape(4,4)
print(原数组)
print(a)
print(默认分割0轴)
b np.split(a,2)
print(b)
print(垂直方向分割)
c np.vsplit(a,2)
print(c)
print(水平方向分割)
d np.hsplit(a,2)
print(d)