NumPy是Python的第三方库,要使用需要先导入。
import numpy as np
在pycharm中可以通过np.来查看numpy的可用函数。
np.函数名? 查看对应函数的详细信息。
生成NumPy数组
ndarray 多维数组对象
numpy封装了一个新的数据类型ndarray,是一个多维数组对象。该对象封装了许多常用数学运算函数。
这段代码要在jupyter中运行才会显示图片。
cv.imread()函数-CSDN博客读取图片后以多维数组的形式保存图片信息,前两维表示图片的像素坐标,最后一维表示图片的通道索引,具体图像的通道数由图片的格式来决定。是一个3维numpy数组,这个数组有三个轴,长度分别为1068、1080、3。
numpy的ndarray对象有3个重要的属性:
print("img数组的维度",img.ndim) print("img数组的形状",img.shape) print("img数组的数据类型",img.dtype)
import numpy as np
# 使用Opencv2开源库读取图像数据
import cv2
from matplotlib import pyplot as plt
# 读取一张图片,把图像转换为2维的numpy数组
img=cv2.imread("./hachiware1.jpg")
# 使用plt显示图像
plt.imshow(img)
print("数据类型:{},形状:{}".format(type(img),img.shape))
利用已有数据生成数组
1)将列表转换为ndarray
numpy.array(lst1)
import numpy as np
lst1=[3.14,2.17,0,1,2]
print(lst1)
nd1=np.array(lst1)
print(nd1)
print(type(nd1))
print(nd1.ndim)
print(nd1.shape)
print(nd1.dtype)
2)将嵌套列表转换成多维数组
import numpy as np
lst1=[ [3.14,2.17,0,1,2] , [1,2,3,4,5] ]
nd2=np.array(lst1)
print(nd2)
print(type(nd2))
print(nd2.ndim)
print(nd2.shape)
print(nd2.dtype)
3)利用random模块生成数组
import numpy as np
#生成形状为(4,4),值在0-1之间的随机数
#np.random.random 生成0-1之间的随机数
print(np.random.random((4,4)),end='\n\n')
#产生一个取值范围在[1,50)之间的数组,数组的形状是(3,3)
#参数起始值(low)默认为0,终止值(high)默认为1
print(np.random.randint(low=1,high=50,size=(3,3)),end='\n\n')
#产生的数组元素是均匀分布的随机数
print(np.random.uniform(low=1,high=3,size=(3,3)),end='\n\n')
#生成满足正态分布的形状为(3,3)的矩阵
print(np.random.randn(3,3))
上面的代码每次结果都不一样了,可以通过设置种子让每次结果都一样。
前面加上下面这段代码即可。
np.random.seed(10)
import numpy as np
np.random.seed(10)
#生成形状为(4,4),值在0-1之间的随机数
#np.random.random 生成0-1之间的随机数
print(np.random.random((4,4)),end='\n\n')
#产生一个取值范围在[1,50)之间的数组,数组的形状是(3,3)
#参数起始值(low)默认为0,终止值(high)默认为1
print(np.random.randint(low=1,high=50,size=(3,3)),end='\n\n')
#产生的数组元素是均匀分布的随机数
print(np.random.uniform(low=1,high=3,size=(3,3)),end='\n\n')
#生成满足正态分布的形状为(3,3)的矩阵
print(np.random.randn(3,3))
生成特定形状的多维数组
import numpy as np
#生成全是0的3*3矩阵
nd5=np.zeros([3,3])
print(nd5)
#生成与nd5形状一样的全0矩阵
nd5=np.zeros_like(nd5)
print(nd5)
#生成全是1的3*3矩阵
nd5=np.ones([3,3])
print(nd5)
#生成三阶单位矩阵
nd5=np.eye(3)
print(nd5)
#生成三阶对角矩阵
nd5=np.diag([1,2,3])
print(nd5)
将生成的数组保存到文件里
import numpy as np
nd5=np.diag([1,2,3])
print(nd5)
#保存为文件
np.savetxt(X=nd5,fname='./test1.txt')
#加载文件中数据
nd5=np.loadtxt('./test1.txt')
print(nd5)
发现文件夹里多了test1.txt文件。
利用arrange、linspace函数生成数组
import numpy as np
#arrange([start,],stop[,step,],dtype=None)
#start和stop用于指定范围,step用于指定步长,生成一个数组
#start默认为0,step可为小数
#范围为[start,stop)
print(np.arange(10))
print(np.arange(0,10))
print(np.arange(1,4,0.5))
print(np.arange(9,-1,-1))