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]
注:这里每次运行结果都不同,该结果只是参考