一维数组
array
将输入的数据(列表、元组等序列)转换为数组,默认使用输入的数据类型,使用dtype指定类型
In [1]: import numpy as np
In [2]: l=[1,2,3,4]
In [3]: arr=np.array(l)
In [4]: arr
Out[4]: array([1, 2, 3, 4])
In [5]: arr=np.array([1,2,3,4])
In [6]: arr
Out[6]: array([1, 2, 3, 4])
多维数组
ones
zeros
分别创建指定长度或形状的全1或全0数组,默认类型为float64,使用dtype指定类型zeros_like
ones_like
根据指定数组的形状和类型建立全0或全1数组eye
identity
创建一个N*N的二维矩阵,对角线为1,其余为0
# array
In [7]: arr2=np.array([[1,2,3],[4,5,6],[7,8,9]])
In [8]: arr2
Out[8]:
array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
# ones,zeros
In [9]: arr2_ones=np.ones((3,3))
In [10]: arr2_ones
Out[10]:
array([[1., 1., 1.],
[1., 1., 1.],
[1., 1., 1.]])
In [11]: arr2_zeros=np.zeros((3,3))
In [12]: arr2_zeros
Out[12]:
array([[0., 0., 0.],
[0., 0., 0.],
[0., 0., 0.]])
# 指定类型
In [13]: arr2_ones1=np.ones((3,3),dtype=np.int64)
In [14]: arr2_ones1
Out[14]:
array([[1, 1, 1],
[1, 1, 1],
[1, 1, 1]], dtype=int64)
# zeros_like,ones_like
In [15]: arr2_zeros1=np.zeros_like(arr2_zeros)
In [16]: arr2_zeros1
Out[16]:
array([[0., 0., 0.],
[0., 0., 0.],
[0., 0., 0.]])
# eye,identity
# 创建5*5的二维矩阵,类型为int64
In [17]: np.eye(5,dtype=np.int64)
Out[17]:
array([[1, 0, 0, 0, 0],
[0, 1, 0, 0, 0],
[0, 0, 1, 0, 0],
[0, 0, 0, 1, 0],
[0, 0, 0, 0, 1]], dtype=int64)
数组属性
dtype
数据类型,shape
数组长度、形状,ndim
数组维数astype
数据类型转换,转换后生成新数组,不影响原数组
In [18]: arr2.dtype
Out[18]: dtype('int32')
In [19]: arr2_ones.shape
Out[19]: (3, 3)
# 一维数组
In [20]: arr.shape
Out[20]: (4,)
# ndim数组维数
In [21]: arr2_ones.ndim
Out[21]: 2
In [22]: arr.ndim
Out[22]: 1
# astype数据类型转换
# float64->int32
In [31]: arr = np.array([3.7, -1.2, -2.6, 0.5, 12.9, 10.1])
In [32]: arr
Out[32]: array([ 3.7, -1.2, -2.6, 0.5, 12.9, 10.1])
In [33]: arr.astype(np.int32)
Out[33]: array([ 3, -1, -2, 0, 12, 10])
# string->float
In [34]: numeric_strings = np.array(['1.25', '-9.6', '42'], dtype=np.string_)
In [35]: numeric_strings.astype(float)
Out[35]: array([ 1.25, -9.6 , 42. ])
数组运算
- 对数组的运算会应用到数组所有元素里
- 大小相同的数组之间运算应用到每个相同位置的元素
- 数组运算不影响原数组内容
- 数组之间比较生成布尔值
In [39]: arr = np.array([[1., 2., 3.], [4., 5., 6.]])
In [40]: arr * arr
Out[40]:
array([[ 1., 4., 9.],
[16., 25., 36.]])
In [41]: arr * 5
Out[41]:
array([[ 5., 10., 15.],
[20., 25., 30.]])
# 运算不影响原数组
In [42]: arr
Out[42]:
array([[1., 2., 3.],
[4., 5., 6.]])
# 数组比较产生布尔值
In [43]: arr2 = np.array([[0., 4., 1.], [7., 2., 12.]])
In [45]: arr2 > arr
Out[45]:
array([[False, True, False],
[ True, False, True]])