numpy库学习

发布时间 2023-11-10 18:00:32作者: 乐池

1. 初始化

numpy数组即numpy的ndarray对象,创建numpy数组就是把一个列表传入np.array()方法。
下面介绍4种方法:

  1. 从Python中的列表、元组等类型创建ndarray数组。
x = np.array(list/tuple)
x = np.array(list/tuple, dtype=np.float32)  # 可以指定类型

x = np.array([[1, 2], [8, 9], (0.1, 0.2)])
  1. 使用NumPy中函数创建ndarray数组,如: arange,ones,zeros等

需要注意的是,`ones''zeros''eyes'创建的都是浮点数类型的数组,arange生成的是整数类型,有需要可以指定类型

x = np.ones((3,6) , dtype = np.int32)
# [[1 1 1 1 1 1]
#  [1 1 1 1 1 1]
#  [1 1 1 1 1 1]]
x = np.ones((3,6))
# [[1. 1. 1. 1. 1. 1.]
#  [1. 1. 1. 1. 1. 1.]
#  [1. 1. 1. 1. 1. 1.]]

a = np.linspace(1,10,4)  # array([ 1., 4., 7., 10.])
b = np.linspace(1,10,4,endpoint=False)  # array([ 1. , 3.25, 5.5 , 7.75])
c = np.concatenate((a, b))  # array([ 1.  ,  4.  ,  7.  , 10.  ,  1.  ,  3.25,  5.5 ,  7.75])
  1. 从字节流(raw bytes )中创建ndarray数组。
  2. 从文件中读取特定格式,创建ndarray数组。

2. 常用属性

属性 解释
T 数组的转置(对高维数组而言)
dtype 数组元素的数据类型
size 数组元素的个数
ndim 数组的维数
shape 数组的维度大小(以元组形式)
astype 类型转换

2.1 shape获取行列数

arr = np.array([[1, 2, 3], [4, 5, 6]])

arr.ndim  # 2
arr.shape  # (2, 3)
arr.shape[0]  # 2 提取行数
arr.shape[1]  # 3 提取列数
arr.size  # 6
arr.dtype  # dtype('int32')

2.2 元素类型

同时还支持两种负数类型:

2.3 类型转换

astype()方法一定会创建新的数组(原始数据的一个拷贝),即使两个类型一致。

还可以使用tolist函数向列表转换

2.4. 数组的维度变换

a = np.ones((2, 3, 4))
a.reshape(3, 8)
a.resize(3, 8)
a.flatten()

3. 数组的索引和切片

一维数组的索引和切片: 与Python的列表类似
多维数组的索引:

a = np.arange(24).reshape((2,3,4))
# [[[ 0  1  2  3]
#   [ 4  5  6  7]
#   [ 8  9 10 11]]

#  [[12 13 14 15]
#   [16 17 18 19]
#   [20 21 22 23]]]
a[1, 2, 3]  # 23
a[-1, -2, -3]  # 17

多维数组的切片:
依然以上面的a数组为例进行切片

4. 数组的运算

4.1 与标量的运算

数组与标量之间的运算作用于数组的每一个元素

a = np.arange(24).reshape((2,3,4))
a = a/a.mean()  # a.mean() = 11.5
# array([[[0.        , 0.08695652, 0.17391304, 0.26086957],
#         [0.34782609, 0.43478261, 0.52173913, 0.60869565],
#         [0.69565217, 0.7826087 , 0.86956522, 0.95652174]],

#        [[1.04347826, 1.13043478, 1.2173913 , 1.30434783],
#         [1.39130435, 1.47826087, 1.56521739, 1.65217391],
#         [1.73913043, 1.82608696, 1.91304348, 2.        ]]])