Numpy 使用前需要导入 numpy,一般写作
import numpy as np
可通过 np.+Tab 来查看可使用的函数,并通过 函数 + ?来查看函数的具体帮助信息。
Numpy 封装了一个心得数据类型 ndarray,它是一个多维数组对象。该对象封装了许多常用的数学运算函数。创建它的方法主要为以下几种:
1)将列表转换为ndarray
import numpy as np lst1 = [3,2,34,1,0] nd1 = np.array(lst1) print(nd1) print(type(nd1))
2) 嵌套列表可以转换为多为ndarray
import numpy as np lst2 = [[3,0,34,2,4],[2,4,1,4,5]] nd2 = np.array(lst2) print(nd2) print(type(nd2))
将上述例子中的列表转换为元组同样适用。
如果需要对数组进行一些条件设置,可以适用random。可以用来进行算法的初始化,如正态分布或均匀分布等。下面列举 np.random 模块常用的函数:
函数 | 描述 |
---|---|
np.random.random | 生成0到1之间的随机数 |
np.random.uniform | 生成均匀分布的随机数 |
np.random.randn | 生成标准正态的随机数 |
np.random.randint | 生成随机的整数 |
np.random.normal | 生成正态分布 |
np.random.shuffle | 随机打乱顺序 |
np.random.seed | 设置随机数种子 |
random_sample | 生成随机的浮点数 |
参数初始化时,有时需要生成一些特殊矩阵,如全是0或1的数组或矩阵,这时我们可以利用下表的函数来实现。
函数 | 描述 |
---|---|
np.zeros((4,5)) | 创建4✖5的全为0的数组 |
np.ones((4,5)) | 创建4✖5的全为1的数组 |
np.empty((4,5)) | 创建4✖5的空数组,数组中的值并不为0,而是未初始化的数值 |
np.zeros_like(aa) | 以aa相同维度创建元素全为0的数组 |
np.ones_like(aa) | 以aa相同维度创建元素全为1的数组 |
np.empty_like(aa) | 以aa相同维度创建空数组 |
np.eye(4) | 该函数创建一个4✖4的单位矩阵I |
np.full((4,5),233) | 创建4✖5的元素全为233的数组,233为指定值 |
将生成的数据保存
import numpy as np nd3 = np.random.random([4,5]) np.savetxt(X = nd3, fname = './test1.txt') nd4 = np.loadtxt('./test1.txt')
arrange 是 numpy 模块中的函数,其格式是:
arrange([start,] stop[,step,], dtype=None)
其中,start(默认为0) 和stop 是用来指定范围, step(可以是小数) 用来设定步长。
import numpy as np print(np.arange(10)) # [0 1 2 3 4 5 6 7 8 9] print(np.arange(0,10)) # [0 1 2 3 4 5 6 7 8 9] print(np.arange(1,4,0.5)) # [1. 1.5 2. 2.5 3. 3.5] print(np.arange(9,-1,-1)) #[9 8 7 6 5 4 3 2 1 0]
linspace 也是numpy 模块中常用的函数,它可以根据输入的指定数据范围以及等份数量,自动生成一个线性等份向量,其格式为:
np.linspace(start, stop, num=50, endpoint = True, retstep = False, dtype = None)
import numpy as np np.random.seed(2021) nd5 = np.randdom.random([10]) # 获取指定位置的数据,获取第3个元素 nd5[2] # 截取一段数据 nd5[2:5] # 截取固定间隔数据 nd5[1:6:2] # 倒序取数 nd5[::-2] #截取一个多维数组的一个区域内数据 nd6 = np.arange(25).reshape([5,5]) nd6[1:4,1:4] # 截取一个多维数组中,数值在一个值域之内的数据 nd6[(nd6 > 2)& (nd6 < 9)] # 截取多为数组中,指定的行,如读取第3,4行 nd6[[2,3]] # or nd6[[2:4,:]] # 截取指定的列 nd6[:,2:4]
除了通过上述的方法外,还可以通过一些函数来实现,如random.choice 函数从指定的样本中随机抽取数据。
import numpy as np from numpy import random as nr a = np. arange(1,25,dtype = float) c1 = nr.choice(a,size = (2,3)) # the size is the shape of the array c1 c2 = nr.choice(a,size = (2,3),replace = False) # when replace is True, the function can repreat choice one number. # the paremeter p is the probability of extraction for each element,defaule is same. c3 = nr.choice(a, size = (2,3), p = a./np.sum(a)) print("repreat") print(c1) print("can not repreat") print(c2) print("repreat and probaility") print(c3)