ndarray 简介
import numpy as np
data = np.array([[1.2,3.14,1.21],
[2.0,3.1,5.11],
[6.1,5.1,8.1]])
data
array([[ 1.2 , 3.14, 1.21],
[ 2. , 3.1 , 5.11],
[ 6.1 , 5.1 , 8.1 ]])
ndarray里面的元素必须是相同类型的,每一个数组有两个属性——shape和dtype:
- shape : 一个表示各维度大小的元组
- dtype : 一个用于说明数组数据类型的对象
print "data的shape元组: ",data.shape
print "data的dtpye属性: ",data.dtype
data的shape元组: (3, 3)
data的dtpye属性: float64
创建ndarray
可以通过下面几个函数创建ndarray数组:
- array函数:接受一切序列对象,然后产生一个新的含有传入数据的numpy数组
- zeros函数:创建指定长度和形状的全0数组, 只要传入一个表示形状的元组
- ones函数:创建指定长度和形状的全1数组, 只要传入一个表示形状的元组
- empty函数: 创建一个没有任何具体值的数组,只要传入一个表示形状的元组
print "array函数创建ndarray:", np.array([1,2,3])
print "zeros函数创建ndarray:", np.zeros((2,3))
print "ones函数创建ndarray: ", np.ones((3,2))
print "empty函数创建ndarray: ", np.empty((3,3))
array函数创建ndarray:
[1 2 3]
zeros函数创建ndarray:
[[ 0. 0. 0.]
[ 0. 0. 0.]]
ones函数创建ndarray:
[[ 1. 1.]
[ 1. 1.]
empty函数创建ndarray:
[[ 0.00000000e+000 1.71908521e-316 1.49044191e-316]
[ 1.30766410e-316 1.30766410e-316 7.49812045e-309]
[ 3.16202013e-322 0.00000000e+000 3.95252517e-322]]
PS:这里可以发现empty返回的不是全0的数组,它返回的都是未初始化的垃圾值。
其他创建ndarray的函数
- asarray函数
a = (1,2,3,4)
b = np.asarray(a)
print "b:",b
c = np.asarray(b)
print "c:",c # 输入的本身就是ndarray就不进行复制
b: [1 2 3 4]
c: [1 2 3 4]
- arange函数:类似于range,返回的是ndarray而不是列表
print np.arange(10).shape
print np.arange(10).dtype
(10,)
int64
- ones_like, zeros_like, empty_like函数
根据另一个数组做参考,并根据其shape和dtype创建一个全1的数组
data = np.array([[1.2,3.14,1.21],
[2.0,3.1,5.11],
[6.1,5.1,8.1]])
np.ones_like(data)
array([[ 1., 1., 1.],
[ 1., 1., 1.],
[ 1., 1., 1.]])
np.zeros_like(data)
array([[ 0., 0., 0.],
[ 0., 0., 0.],
[ 0., 0., 0.]])
np.empty_like(data)
array([[ 2.47300883e-316, 0.00000000e+000, 2.78864326e-316],
[ 2.78728517e-316, 2.78936657e-316, 2.80573477e-316],
[ 6.93779655e-310, 0.00000000e+000, 2.11232826e-316]])
- eye,identity函数:创建一个N*N的单位矩阵(对角线为全1,其余为全0)
np.eye(4)
array([[ 1., 0., 0., 0.],
[ 0., 1., 0., 0.],
[ 0., 0., 1., 0.],
[ 0., 0., 0., 1.]])
np.identity(4)
array([[ 1., 0., 0., 0.],
[ 0., 1., 0., 0.],
[ 0., 0., 1., 0.],
[ 0., 0., 0., 1.]])
上面所有函数都可以在里面定义dtype属性,参考下面:
np.identity(4,dtype=float)
array([[ 1., 0., 0., 0.],
[ 0., 1., 0., 0.],
[ 0., 0., 1., 0.],
[ 0., 0., 0., 1.]])
np.identity(4,dtype=int)
array([[1, 0, 0, 0],
[0, 1, 0, 0],
[0, 0, 1, 0],
[0, 0, 0, 1]])