阅读 183
numpy系列之数组的生成

numpy系列之数组的生成

numpy是针对多维数组(ndarray)的一个科学计算包,这个包里封装了多个可以用于数组间计算的方法。

数组是相同类型的元素按一定顺序排列的组合。数组中的元素,其数据类型必须相同

1 生成一般数组

1.1 一维数组的生成

1.1.1 以列表的形式生成一维数组

import numpy as np
​
arr = np.array([2, 4, 6, 8])
print(arr)
复制代码

result:

[2 4 6 8]
复制代码

1.1.2 以元组的形式生成一维数组

import numpy as np
​
arr = np.array((2, 4, 6, 8))
print(arr)
复制代码

result:

[2 4 6 8]
复制代码

1.2 多维数组的生成

1.2.1 以列表的形式生成一维数组

import numpy as np
​
arr = np.array([[1, 2, 3, 4], [2, 4, 6, 8]])
print(arr)
复制代码

result:

[[1 2 3 4]
 [2 4 6 8]]
复制代码

1.2.2 以元组的形式生成一维数组

import numpy as np
​
arr = np.array(((1, 2, 3, 4), (2, 4, 6, 8)))
print(arr)
复制代码

result:

[[1 2 3 4]
 [2 4 6 8]]
复制代码

2 生成特殊类型的数组

2.1 生成固定范围的随机数组

生成固定范围内的随机数组用到的方法是arange()

range(start,stop,step)
复制代码

上述代码表示生成一个以start开始(包括start),stop结束(不包含stop),step为步长的随机序列。

参数释义:

start:开始位置,生成的序列包含start,默认为0

stop:结束位置,生成的序列不包含stop

step:步长,默认为1

import numpy as np
​
arr = np.arange(1, 15, 3)
print(arr)
复制代码

result:

[ 1  4  7 10 13]
复制代码

上述表示生成从1到15之间间隔为3的序列

2.2 生成指定形状全为0的数组

生成指定形状全为0的数组用到的方法是zeros()

2.2.1 生成全为0的一维数组

import numpy as np
​
arr = np.zeros(3)
print(arr)
复制代码

result:

[0. 0. 0.]
复制代码

2.2.2 生成全为0的多维数组

import numpy as np
​
arr = np.zeros((2, 3))
print(arr)
复制代码

result:

[[0. 0. 0.]
 [0. 0. 0.]]
复制代码

2.3 生成指定形状全为1的数组

生成指定形状全为1的数组用到的方法是ones()

2.3.1 生成全为1的一维数组

import numpy as np
​
arr = np.ones(3)
print(arr)
复制代码

result:

[1. 1. 1.]
复制代码

2.3.2 生成全为1的多维数组

import numpy as np
​
arr = np.ones((2, 3))
print(arr)
复制代码

result:

[[1. 1. 1.]
 [1. 1. 1.]]
复制代码

2.4 生成单位矩阵

import numpy as np
​
arr = np.eye(3)
print(arr)
复制代码

result:

[[1. 0. 0.]
 [0. 1. 0.]
 [0. 0. 1.]]
复制代码

3 生成随机数组

3.1 生成0到1之间的随机数组

3.1.1 生成0到1之间的随机一维数组

import numpy as np
​
print(np.random.rand(3))
复制代码

result:

[0.75829412 0.84077953 0.84004982]
复制代码

3.1.2 生成0到1之间的随机多维数组

import numpy as np
​
print(np.random.rand(2, 3))
复制代码

result:

[[0.18621174 0.88523494 0.23696019]
 [0.48601592 0.96503436 0.17714081]]
复制代码

注意这里创建多维数组和前面的区别,不使用元组或列表进行参数传递,直接传递多个即可

3.2 生成满足正态分布的数组

3.2.1 生成满足正态分布的一维数组

import numpy as np
​
print(np.random.randn(2))
复制代码

result:

[-0.54451739  0.70519053]
复制代码

3.2.2 生成满足正态分布的多维数组

import numpy as np
​
print(np.random.randn(2, 3))
复制代码

result:

[[-1.09094899  0.29661067 -0.9772994 ]
 [-0.66585228  0.91998882  0.06880275]]
复制代码

3.3 生成一定范围内的随机数组

生成固定范围内的随机数组用到的方法是randint()

randint(low,high=None,size=None)
复制代码

上述代码表示在[low, high)内生成数组,其大小为size, 数组内的整数值呈均匀分布

high参数为空时,区间就变成[0, low)

3.3.1 生成一定范围内的随机一维数组

生成0到5之间长度为10的一维数组

import numpy as np
​
print(np.random.randint(5, size=10))
复制代码

result:

[4 4 2 1 2 1 2 4 1 2]
复制代码

3.3.2 生成一定范围内的随机多维数组

import numpy as np
​
print(np.random.randint(5, size=(2, 3)))
复制代码

result:

[[3 3 2]
 [3 1 0]]
复制代码

3.4 从已知数组中随机选取相应大小的数组

生成固定范围内的随机数组用到的方法是choice()

np.random.choice(a, size=None, replace=None, p=None)
复制代码

上述代码表示从数组a中选取size大小的数组作为一个新的数组。

a可以是一个数组,也可以是一个整数。

a是数组表示从该数组随机采样。

a是整数时表示从range(a)中采样

3.4.1 从已知数组中随机选取相应大小的一维数组

import numpy as np

print(np.random.choice(5, 3))
复制代码

result:

[2 0 2]
复制代码

3.4.2 从已知数组中随机选取相应大小的多维数组

import numpy as np

print(np.random.choice(5, (2, 3)))
复制代码

result:

[[1 4 0]
 [0 4 4]]
复制代码

3.5 数组打乱

import numpy as np

arr = np.arange(10)
print(arr)
复制代码

result:

[0 1 2 3 4 5 6 7 8 9]
复制代码
np.random.shuffle(arr)
print(arr)
复制代码

result:

[2 4 5 7 0 8 6 1 3 9]
复制代码

注:这里每次运行结果都不同,该结果只是参考

文章分类
后端