- 将列表转换为数组
- 创建随机数组(random模块)
- 随机打乱数组顺序(shuffle)
- 设置随机数种子(seed、RandomState)
- 按指定形状创建多维数组
- 数组拼接(concatenate vstack hstack)
- 数组分裂(split vsplit hsplit)
import numpy as np list1 = [[2, 5, 3.2], [0, 4.2, 5]] nd1 = np.array(list1) print(nd1) ''' [[2. 5. 3.2] [0. 4.2 5. ]] '''创建随机数组(random模块)
| 函数 | 代码 | 含义 |
|---|---|---|
| random:0~1之间的随机数 | np.random.random() | |
| np.random.random() | 生成一个0~1之间的随机数 | |
| np.random.random(2) | 生成两个0到1之间的随机数 | |
| np.random.random((2, 2)) | 生成形状为(2, 2)的0到1之间的随机数 | |
| rand:0~1之间均匀分布的随机数 | np.random.rand() | |
| np.random.rand(2) | 生成两个服从0-1均匀分布的随机数 | |
| np.random.rand(2, 3) | 生成形状为(2,3)的服从0-1均匀分布的随机数 | |
| np.random.rand(2, 3, 4) | 生成形状为(2,3,4)的服从0-1均匀分布的随机数 | |
| uniform:某区间均匀分布的随机小数 | np.random.uniform() | |
| np.random.uniform(2, 5) | 生成一个均匀分布在[2,5)区间的随机数 | |
| np.random.uniform(10, 50, 3) | 生成三个均匀分布在[10,50)区间的随机数 | |
| np.random.uniform(0, 10, (2, 3)) | 生成三个均匀分布在[10,50)区间的随机数 | |
| randn:标准正态的随机小数 | np.random.randn() | |
| np.random.randn() | 生成一个标准正态的随机数 | |
| np.random.randn(3) | 生成三个标准正态的随机数 | |
| np.random.randn(2, 3) | 生成形状为且(2,3)的标准正态的随机数 | |
| randint:随机生成整数 | np.random.randint() | |
| np.random.randint(2, 5) | 随机生成一个[2,5)区间的整数 | |
| np.random.randint(0, 10, 5) | 随机生成5个[0,10)区间的整数 | |
| np.random.randint(10, 50, (2, 3)) | 随机生成形状为(2,3)的数值在[10,50)区间的整数 | |
| normal:生成正态分布 | np.random.normal() | |
| np.random.normal(10, 1) | 随机生成1个正态分布为(10,1)的随机数 | |
| np.random.normal(5, 10, 3) | 随机生成3个正态分布为(5,10)的随机数 | |
| np.random.normal(82, 20, (2, 3)) | 随机生成形状为(2,3)的正态分布为(82,20)的随机数 | |
| random_sample:随机的浮点数 | np.random.random_sample() | |
| np.random.random_sample() | 随机生成1个浮点数 | |
| np.random.random_sample(3) | 随机生成3个浮点数 | |
| np.random.random_sample((3, 3)) | 随机生成形状为(3,3)的浮点数 |
nd = np.random.randint(0,10,(5,5)) print(nd) ''' [[9 3 6 5 1] [4 2 5 7 8] [5 9 1 7 7] [1 1 5 9 3] [7 0 1 4 8]] ''' np.random.shuffle(nd) #将nd数组按行顺序打乱 print(nd) ''' [[1 1 5 9 3] [4 2 5 7 8] [9 3 6 5 1] [5 9 1 7 7] [7 0 1 4 8]] '''设置随机数种子(seed、RandomState)
设置种子是为了保证每次生成的数一样
rng = np.random.RandomState(42) # 种子 ser = pd.Series(rng.randint(0,10,4))
设置随机数种子,100为参数,参数任意取,参数不同,所获得的随机数不同。由于有种子的存在,每次生成5个[0,10)区间的整数相同
np.random.seed(100)
nd = np.random.randint(0, 10, 5)
print("种子为100时随机数的结果为:",nd)
'''
种子为100时随机数的结果为: [8 8 3 7 7]
'''
按指定形状创建多维数组
| 函数 | 代码 | 含义 |
|---|---|---|
| zeros:创建全为0的数组 | np.zeros() | |
| np.zeros(2) | 创建全为0的且含两个元素的一维数组 | |
| np.zeros((2,3)) | 创建全为0的且形状为(2,3)的二维数组 | |
| np.zeros((2,3,4),dtype=int) | 创建全为0的且形状为(2,3,4)的三维数组,int类型 | |
| ones:创建全为1的数组 | np.ones() | |
| np.ones(2) | 创建全为1的且含两个元素的一维数组 | |
| np.ones((2,3)) | 创建全为1的且形状为(2,3)的二维数组 | |
| np.ones((2,3,4)) | 创建全为1的且形状为(2,3,4)的三维数组 | |
| empty:创建空数组,空数据不为0,而是未初始化 | np.empty() | |
| np.empty(2) | 创建全为空的且含两个元素的一维数组 | |
| np.empty((2,3)) | 创建全为空的且形状为(2,3)的二维数组 | |
| np.empty((2,3,4)) | 创建全为空的且形状为(2,3,4)的三维数组 | |
| zeros_like:创建与某数组相同形状且全为0的数组 | np.zeros_like() | |
| np.zeros_like(nd1) | 创建与nd1维度形状相同且元素全为0的数组 | |
| ones_like:创建与某数组相同形状且全为1的数组 | np.ones_like() | |
| np.ones_like(nd1) | 创建与nd1维度形状相同且元素全为1的数组 | |
| empty_like:创建与某数组相同形状且为空的空数组(未初始化) | np.empty_like() | |
| np.empty_like(nd1) | 创建与nd1维度形状相同且全为空的数组 | |
| eye:创建左上到右下对角线为1,其他为0的数组 | np.eye() | |
| np.eye(5) | 创建5*5的单位矩阵,左上角到有右下角的对角线全为1,其他为0 | |
| full:将某值填充某数组 | np.full() | |
| np.full((3,5),666) | 创建形状为(3,5)且元素全为666的数组 | |
| diag:创建对角线为某值其他为0的数组 | np.diag() | |
| np.diag((1,2,3)) | 创建左上到右下对角线为1,2,3其他为0的矩阵 | |
| linspace:创建某范围内的等差数列 | np.linspace() | |
| np.linspace(0,5,11) | 创建从0到5元素为11个的等差数列 | |
| logspace:创建某范围内的等比数列 | np.logspace() | |
| np.logspace(0,2,10) | 创建从10º到10²元素为10个的等比数列 | |
| np.logspace(1,3,10) | 创建从10¹到10³元素为10个的等比数列 | |
| arange | np.arange() | |
| np.arange(10) | 从[0,10)的整数 | |
| np.arange(5, 11) | 从[5,11)的整数 | |
| np.arange(3, 12, 2) | 从[3,12)且间隔为2的整数 | |
| np.arange(2, 13, 3) | 从[2,13)且间隔为3的整数 |
import numpy as np a = np.array([1,2,3]) b = np.array([4,5,6]) c = np.array([7,8,9]) print(np.concatenate([a,b,c])) ''' [1 2 3 4 5 6 7 8 9] ''' aa = np.array([[1,2],[3,4]]) bb = np.array([[5,6],[7,8]]) print(np.concatenate([aa,bb])) # 按第一个轴拼接 ''' [[1 2] [3 4] [5 6] [7 8]] ''' print(np.concatenate([aa,bb],axis=1)) # 按第二个轴拼接 ''' [[1 2 5 6] [3 4 7 8]] ''' print(np.vstack([aa,bb])) # 垂直拼接 ''' [[1 2] [3 4] [5 6] [7 8]] ''' print(np.hstack([aa,bb])) # 水平拼接 dstack第三维度 ''' [[1 2 5 6] [3 4 7 8]] '''数组分裂(split vsplit hsplit)
import numpy as np a = np.array([1,2,3,4,5,6,7,8]) x,y,z = np.split(a,[3,5])#3 5为索引 print(x,y,z) ''' [1 2 3] [4 5] [6 7 8] ''' aa = np.array([[1,1,1,1],[2,2,2,2],[3,3,3,3],[4,4,4,4]]) x,y = np.vsplit(aa,[1]) print(x) ''' [[1 1 1 1]] ''' print(y) ''' [[2 2 2 2] [3 3 3 3] [4 4 4 4]] ''' x,y = np.hsplit(aa,[1]) print(x) ''' [[1] [2] [3] [4]] ''' print(y) ''' [[1 1 1] [2 2 2] [3 3 3] [4 4 4]] '''



