import numpy as np # 导入numpy对象
data = np.arange(12).reshape(3,4) # 创建一维数组对象,并将一维数组对象转换为3行4列的二维数组
data
结果如下
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
type(data) # 查看数组类型
numpy.ndarray
data.dtype # 查看数组中元素的类型
dtype('int32')
data.size # 查看元素个数
data.ndim # 查看维度
创建numpy数组
data1 = np.array([1,2,3]) # 通过array对象创建一维数组
data1
array([1, 2, 3])
In [12]:
data2 = np.array([[1,2,3],[4,5,6]]) # 通过array对象创建二维数组
data2
array([[1, 2, 3], [4, 5, 6]])
np.zeros((3,4)) # 创建一个全是0的3行4列的二维数组
array([[0., 0., 0., 0.],
[0., 0., 0., 0.],
[0., 0., 0., 0.]])
np.ones((3,4))
array([[1., 1., 1., 1.],
[1., 1., 1., 1.],
[1., 1., 1., 1.]])
np.empty((5,6)) # 创建空数组对象,只是分配了内存地址,填充元素都是随机的
array([[1.06219823e-311, 1.06219205e-311, 0.00000000e+000,
0.00000000e+000, 0.00000000e+000, 5.02034658e+175],
[4.08537827e-033, 2.32104348e-056, 1.68612868e+160,
6.75392013e-067, 1.47763641e+248, 1.16096346e-028],
[7.69165785e+218, 1.35617292e+248, 1.45605741e+185,
2.36164759e+180, 8.97799394e-067, 8.44751880e+169],
[4.26580534e-096, 6.32299154e+233, 3.65588282e+233,
1.74569531e+238, 1.11763132e+261, 1.16318408e-028],
[2.24729310e+174, 1.56605686e-076, 4.75387786e-038,
1.48220335e-071, 2.00426845e-076, 2.62459089e-306]])
np.arange(1,20,2) # 通过arange生成一个等差数组
array([ 1, 3, 5, 7, 9, 11, 13, 15, 17, 19])
a = np.array([1,2,3,4],float) # 创建数组时指定元素类型
array([1., 2., 3., 4.])
b = np.zeros((2,3),dtype='float64')
b.dtype
dtype('float64')
ndarray对象的数据类型
data_one = np.array([[1,2,3],[4,5,6]]) # 创建二维数组对象
data_one
array([[1, 2, 3],
[4, 5, 6]])
data_one.dtype
dtype('int32')
数据类型的转换
float_data = data_one.astype(np.float64) # astype转变数据类型
float_data.dtype
dtype('float64')
数组运算
data1 = np.array([[1,2,3],[4,5,6]]) # 创建两个数组对象
data2 = np.array([[1,3,5],[2,4,6]])
data1
array([[1, 2, 3],
[4, 5, 6]])
data2
array([[1, 3, 5],
[2, 4, 6]])
data1 - data2 # array对象允许相加相减相乘相除,是对位运算
array([[ 0, -1, -2],
[ 2, 1, 0]])
data1 // data2
array([[1, 0, 0],
[2, 1, 1]], dtype=int32)
数组广播
arr1 = np.array([[0],[1],[2],[3]]) # 创建四行一列的二维数组对象
arr1
array([[0],
[1],
[2],
[3]])
arr1.shape # 数组形状
(4, 1)
arr2 = np.array([1,2,3])
arr2
array([1, 2, 3])
arr2.shape
(3,)
arr1 - arr2
array([[-1, -2, -3], [ 0, -1, -2], [ 1, 0, -1], [ 2, 1, 0]])
arr1 / arr2
array([[0. , 0. , 0. ],
[1. , 0.5 , 0.33333333],
[2. , 1. , 0.66666667],
[3. , 1.5 , 1. ]])
a = np.array([5,2])
a
array([5, 2])
b = np.array([[1,2],[2,3]])
b
array([[1, 2],
[2, 3]])
a - b
array([[ 4, 0],
[ 3, -1]])
数组与标量的运算 # 标量就是常数
arr3 = np.array([[1,2,3],[4,5,6]])
data2 = 10
arr3
array([[1, 2, 3], [4, 5, 6]])
arr3 - data2 # 数组对象和标量运算,也属于广播机制中的一种
array([[-9, -8, -7], [-6, -5, -4]])
arr3 / data2
array([[0.1, 0.2, 0.3],
[0.4, 0.5, 0.6]])



