numpy模块
numpy模块
-
用途:多用于二维数组的处理
-
对象类型为 <class 'numpy.ndarray'>
-
import numpy as np -----习惯写法
# 创建一维的ndarray对象
arr = np.array([1, 2, 3])
print(arr, type(arr))
>>>[1 2 3] <class 'numpy.ndarray'>
# 创建二维的ndarray对象
print(np.array([[1, 2, 3], [4, 5, 6]]))
>>>[[1 2 3]
[4 5 6]]
# 创建三维的ndarray对象
print(np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]))
>>>[[1 2 3]
[4 5 6]
[7 8 9]]
函数创建数组
方法 | 详解 |
---|---|
array() | 将列表转换为数组,可选择显式指定dtype |
arange() | range的numpy版,支持浮点数 |
linspace() | 类似arange(),第三个参数为数组长度 |
zeros() | 根据指定形状和dtype创建全0数组 |
ones() | 根据指定形状和dtype创建全1数组 |
eye() | 创建单位矩阵 |
empty() | 创建一个元素全随机的数组 |
reshape() | 重塑形状 |
常用属性
属性 | 解释 |
---|---|
T | 数组的转置(对高维数组而言) |
dtype | 数组元素的数据类型 |
size | 数组元素的个数 |
ndim | 数组的维数 |
shape | 数组的维度大小(以元组形式) |
astype | 类型转换 |
方法
-
np.random.shuffle(arr1) ---就地修改,返回行之间打乱顺序
-
取值
-
arr = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]]) print(arr) >>>[[ 1 2 3 4] [ 5 6 7 8] [ 9 10 11 12]]
-
# 取所有元素 print(arr[:, :]) >>>[[ 1 2 3 4] [ 5 6 7 8] [ 9 10 11 12]]
-
# 取第一行的所有元素 print(arr[:1, :]) >>>[[1 2 3 4]]
-
# 取第一列的所有元素 print(arr[:, :1]) >>>[[1] [5] [9]]
-
# 取第一列的所有元素 print(arr[(0, 1, 2), 0]) >>>[1 5 9]
-
# 取大于5的元素,返回一个数组 print(arr[arr > 5]) >>>[ 6 7 8 9 10 11 12]
-
# numpy数组按运算符取元素的原理,即通过arr > 5生成一个布尔numpy数组 print(arr > 5) >>>[[False False False False] [False True True True] [ True True True True]]
-
-
数组元素的替换
- 同取值,加赋值,即可将行或者列更换数字
- 算数运算同理
-
数组的合并
-
arr1 = np.array([[1, 2], [3, 4], [5, 6]]) print(arr1) arr2 = np.array([[7, 8], [9, 10], [11, 12]]) print(arr2)
-
# 合并两个numpy数组的行,注意使用hstack()方法合并numpy数组,numpy数组应该有相同的行,其中hstack的h表示horizontal水平的 print(np.hstack((arr1, arr2)))
-
# 合并两个numpy数组,其中axis=1表示合并两个numpy数组的行 print(np.concatenate((arr1, arr2), axis=1))
-
# 合并两个numpy数组的列,注意使用vstack()方法合并numpy数组,numpy数组应该有相同的列,其中vstack的v表示vertical垂直的 print(np.vstack((arr1, arr2)))
-
# 合并两个numpy数组,其中axis=0表示合并两个numpy数组的列 print(np.concatenate((arr1, arr2), axis=0))
-
-
数组的点乘
-
arr1 = np.array([[1, 2, 3], [4, 5, 6]]) print(arr1.shape) arr2 = np.array([[7, 8], [9, 10], [11, 12]]) print(arr2.shape) assert arr1.shape[0] == arr2.shape[1] # 2*3·3*2 = 2*2 print(arr2.shape)
-
-
数组的转置
-
arr = np.array([[1, 2, 3], [4, 5, 6]]) print(arr) print(arr.transpose()) print(arr.T)
-
-
数组的逆
-
arr = np.array([[1, 2, 3], [4, 5, 6], [9, 8, 9]]) print(arr) print(np.linalg.inv(arr)) # 单位numpy数组的逆是单位numpy数组本身 arr = np.eye(3) print(arr) print(np.linalg.inv(arr))
-