NumPy科学计数的基础库。重在与数值计算,也是大部分python科学计算库的基础,多用于在大型、多维数组执行的数值运算
numpy的创建
-
使用np.array()创建
-
使用plt创建
-
使用np的routine函数创建
使用array()创建一个一维数组:
arr = np.array([1, 2, 3]) # dtype是数组类型 print(arr)
使用array()创建一个多维数组:
arr2 = np.array([[1, 2, 3], [4, 5, 6]]) print(arr2)
数组与列表的区别:
数组中存储的数据元素类型必须是同一类型
优先级:字符串>浮点型>整数
将外部的一张图片读取加载到numpy数组中,然后尝试改变数组元素的数值查看对原图的影响
im_arr = plt.imread('4.jpg') # 返回的数组,数组中装载的即为图片内容
i = im_arr.copy()
# plt.imshow(im_arr) # 将numpy数组进行可视化展示
i -= 100 # 将每一个数组元素都减去100
plt.imshow(i)
pylab.show() # 保证能显示图片
各种数组:
one = np.ones(shape=(1, 2)) # 1行2列的单位数组 zero = np.ones(shape=(3, 4)) # 3行4列的0数组 line = np.linspace(0, 100, num=20) # 0到100且数组大小为20的一维等差数列数组 arange = np.arange(10, 50, step=2) # 10到50且等差为1的一维等差数组 rand = np.random.randint(0, 100, size=(5, 3)) # 0到100的5行3列的随机数组
numpy的常用属性:
shape:返回数组的形状
ndim:返回数组的维度
size:返回数组元素个数
dtype:返回数组元素类型
dtype指定np数组元素类型:
arr = np.array([1, 2, 3], dtype='int32')
arr.dtype = 'int32'
//dtype('int32')
numpy的索引和切片:
arr[1] # 取出numpy数组中下标为1的行数据 arr[1, 3, 4] # 取出多行 arr[0:2] # 切出arr数组的前两行数据 arr[:, 0:2] # arr[行切片, 列切片] arr[::-1] # 将数组的行倒置 arr[:, ::-1] # 将数组的列倒置 arr[::-1, ::-1] # 所有元素倒置
翻转图片:
plt.imshow(im_arr[:, ::-1]) # 将图片进行左右反转 plt.imshow(im_arr[::-1, :]) # 将图片进行上下反转
图片的裁剪:
plt.imshow(im_arr[66:200, 78:300])
数组的变形reshape:
arr.reshape(shape=(30,)) # 多维变一维 arr.reshape((6, 5)) # 一维变多维
级联操作:同一维度
将多个numpy数组进行横向或纵向的拼接
axis轴向理解:0:列,1:行
np.concatenate((arr, arr), axis=1) # 行拼接 np.concatenate((arr, arr), axis=0) # 列拼接
聚合操作:
sum,max,min,mean
arr.sum(axis=0) # 求每一列之和 arr.sum(axis=1) # 求每一行之和 arr.max() # 求全数组最大值
数学函数:
np.sin(arr) # 每个元素的sin值 np.around(a, decimals) # 返回指定数的四舍五入值 # 其中a为数组,decimals为舍入的小数位数,默认为0,若为负,整数将四舍五入到小数点左侧的位置
统计函数:
-
np.amin()和np.amax():用于计算数组中的元素沿指定轴的最小、最大值
-
np.ptp():计算数组中元素最大值与最小值的差(最大值 - 最小值)
-
np.median():函数用于计算数组a中元素的中位数(中值)
-
标准差std:平均值分散程度的度量std = sqrt(mean((x - x.mean())**2))
arr[1].std()
-
方差var:每个样本值与全体样本值的平均数之差的平方值的平均数,var = mean((x - x.mean())**2),即标准差为方差的平方根
arr[1].var()
矩阵操作:
矩阵库:numpy.matlib,该模块返回一个矩阵而非ndarray对象
np.matlib.identity()函数返回给定大小的单位矩阵
np.eye(6) # 返回单位矩阵 arr.T # 返回矩阵的转置
矩阵相乘:
a1 = np.array([[2, 1], [4, 3]]) a2 = np.array([[1, 2], [1, 0]]) mul = np.dot(a1, a2) # 矩阵的点乘



