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')

参数说明:

python numpy创建指定大小的数组 numpy创建一个数组_Numpy创建数组


注意数组形状为元祖类型,下同。

实例:创建空数组

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')

参数说明:

python numpy创建指定大小的数组 numpy创建一个数组_Numpy数组_02


实例:生成全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')

参数说明:

python numpy创建指定大小的数组 numpy创建一个数组_Numpy矩阵_03


实例:生成全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]])