1、番外说明
大家好,我是小P,本系列是本人对Python模块Numpy的一些学习记录,总结于此一方面方便其它初学者学习。
2、正题
参考链接:
http://www.runoob.com/numpy/numpy-array-creation.html
ndarray 数组除了可以使用底层 ndarray 构造器来创建外,也可以通过以下几种方式来创建。
2.1 numpy.empty
numpy.empty 方法用来创建一个指定形状(shape)、数据类型(dtype)且未初始化的数组:
numpy.empty(shape, dtype = float, order = 'C')
参数说明:
注意数组形状为元祖类型,下同。
实例:创建空数组
import numpy as np
x = np.empty([3,2], dtype = int)
print (x)
输出结果为:
[[ 6917529027641081856 5764616291768666155]
[ 6917529027641081859 -5764598754299804209]
[ 4497473538 844429428932120]]
注意 − 数组元素为随机值,因为它们未初始化。与运行平台也有关,如在anaconda上的结果为:
array([[0, 0],
[0, 0],
[0, 0]])
2.2 numpy.zeros
创建指定大小的数组,数组元素以 0 来填充:
numpy.zeros(shape, dtype = float, order = 'C')
参数说明:
实例:生成全0数组
import numpy as np
# 默认为浮点数
x = np.zeros(5)
print(x)
# 设置类型为整数
y = np.zeros((5,), dtype = np.int)
print(y)
# 自定义类型
z = np.zeros((2,2), dtype = [('x', 'i4'), ('y', 'i4')])
print(z)
输出结果为:
[0. 0. 0. 0. 0.]
[0 0 0 0 0]
[[(0, 0) (0, 0)]
[(0, 0) (0, 0)]]
2.3 numpy.ones
创建指定形状的数组,数组元素以 1 来填充:
numpy.ones(shape, dtype = None, order = 'C')
参数说明:
实例:生成全1数组
import numpy as np
# 默认为浮点数
x = np.ones(5)
print(x)
# 自定义类型
x = np.ones([2,2], dtype = int)
print(x)
输出结果为:
[1. 1. 1. 1. 1.]
[[1 1]
[1 1]]
2.4 创建随机数组
实例:创建均匀分布的随机数组
>>> np.random.rand(3,2)
array([[ 0.14022471, 0.96360618], #random
[ 0.37601032, 0.25528411], #random
[ 0.49313049, 0.94909878]]) #random
实例:创建一个整数型指定范围在 [low.high] 之间的数组
>>> np.random.randint(5, size=(2, 4))
array([[4, 0, 2, 1],
[3, 2, 2, 0]])
或者生成100-200之间的随机整数数组:
>>> np.random.randint(100,200,(4,5))
array([[161, 118, 188, 196, 136],
[195, 176, 102, 180, 134],
[196, 104, 163, 198, 174],
[197, 182, 151, 149, 151]])
实例:创建标准正态分布的数组
>>> 2.5*np.random.randn(2,3)+3
array([[1.36031181, 6.63922276, 3.07961131],
[1.99947546, 2.99573886, 1.52338894]])
实例:创建半开区间[0.0,1.0)中随机浮点数的数组
>>> np.random.random_sample((2,3))
array([[0.85586627, 0.29212247, 0.7890414 ],
[0.01421155, 0.19602111, 0.94299911]])
2.5 numpy.eye
实例:创建对角线为1其它元素为0的矩阵
eye(N, M=None, k=0, dtype=<class 'float'>, order='C')
N和M表示行列,只指定一个数字时表示方阵。K表示对角线索引,0为主对角线,正数为上对角线,负数为下对角线。
>>> np.eye(3)
array([[1., 0., 0.],
[0., 1., 0.],
[0., 0., 1.]])
>>> np.eye(4,k=1)
array([[0., 1., 0., 0.],
[0., 0., 1., 0.],
[0., 0., 0., 1.],
[0., 0., 0., 0.]])
>>> np.eye(4,k=-1)
array([[0., 0., 0., 0.],
[1., 0., 0., 0.],
[0., 1., 0., 0.],
[0., 0., 1., 0.]])
2.6 numpy.diag
创建对角矩阵
diag(v, k=0)
V为对角线元素,K表示对角索引,同上。
实例:创建对角矩阵
>>> x = np.arange(9).reshape((3,3))
>>> x
array([[0, 1, 2],
[3, 4, 5],
[6, 7, 8]])
>>> np.diag(np.diag(x))
array([[0, 0, 0],
[0, 4, 0],
[0, 0, 8]])