目录
NumPy 是一个开源的 Python 库,用于科学计算。它提供了一个高性能的多维数组对象和用于处理这些数组的工具。以下是一些 NumPy 的常用操作:
-
创建数组:
np.array()
: 创建一个数组。np.zeros()
: 创建一个元素全部为0的数组。np.ones()
: 创建一个元素全部为1的数组。np.arange()
: 创建一个序列数组。np.linspace()
: 创建一个在指定区间等分的数组。
-
数组的形状操作:
array.shape
: 查询数组形状。array.reshape()
: 改变数组的形状。np.newaxis
: 增加一个新轴。np.expand_dims()
: 扩展数组的形状。array.flatten()
: 展平数组。
-
数组的索引、切片和迭代:
- 使用整数数组索引。
- 使用布尔数组索引。
- 使用花式索引。
- 切片操作。
-
数组的计算:
- 算术运算符:
+
、-
、*
、/
和**
。 np.dot()
: 矩阵乘法。np.sum()
,np.prod()
,np.mean()
,np.std()
: 计算总和、乘积、平均值和标准差等。np.min()
,np.max()
: 计算最小值和最大值。
- 算术运算符:
-
广播:
- NumPy 可以在执行算术运算时自动应用广播规则。
-
聚合操作:
np.sum()
,np.mean()
,np.std()
,np.var()
,np.min()
,np.max()
: 聚合操作可以沿数组的指定轴应用。
-
线性代数:
np.dot()
: 矩阵乘法。np.linalg.inv()
: 计算矩阵的逆。np.linalg.solve()
: 解线性方程组。np.linalg.eig()
: 计算方阵的特征值和特征向量。
-
随机数:
np.random.rand()
: 产生指定形状的随机数组。np.random.randn()
: 产生标准正态分布的随机数组。np.random.randint()
: 产生随机整数数组。
-
保存和加载:
np.save()
和np.savez()
: 保存数组到磁盘。np.load()
: 从磁盘加载数组。
-
类型转换和类型强制:
- 使用
array.astype()
转换数组的数据类型。
- 使用
NumPy 是一个非常强大的库,以上只是它功能的一部分。在实际使用中,根据具体的需求,可能还会涉及到更多的函数和操作。
以下是部分代码示范:
一、数组的创建
导入
import numpy as np
数组创建的几种形式
'''创建数组'''
# 创建一个数组
a = np.array([1, 2, 3])
print(a)
# 创建一个 2 * 2 全部为0的算法
a = np.zeros((2,2))
print(a)
# 创建一个 2 * 2 全部为1的算法
a = np.ones((2*2))
print(a)
# 创建1~10序列数组
a = np.arange(10)
print(a)
# 1 ~ 9 步长为2
a = np.arange(1,10,2)
print(a)
# 0 到 10 ,等长分成 5 份
e = np.linspace(0, 10, 5)
print(e)
二、切片及索引的运算
a = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(a)
# 取对角线
rows = [0,1,2]
cols = [0,1,2]
print(a[rows,cols])
# 布尔索引
c = a[a > 5]
print(c)
# 切片
d = a[1:3,1:3]
print(d)
# 遍历数组
for i in a:
for j in i:
print(j,end=' ')
三、 简单的运算
a = np.array([1, 2, 3, 4])
b = np.array([5, 6, 7, 8])
# 算术运算
c = a + b
print(c)
d = a * b
print(d)
# 矩阵乘法
A = np.array([[1, 2], [3, 4]])
B = np.array([[1,2],[1,1]])
C = np.dot(A,B)
print(C)
# 求最大最小值
print(a.max())
print(a.min())
# 求和
sum_a = a.sum()
print(sum_a)
# 求平均数
mean_a = a.mean()
print(mean_a)
四、数学运算
A = np.array([[1, 2], [3, 4]])
print(A)
# 求矩阵的逆
ivn_A = np.linalg.inv(A)
print(ivn_A)
# 求A的行列式
det_A = int(np.linalg.det(A))
print(det_A)
# 求A的值和特征向量
eigenvalues, eigenvectors = np.linalg.eig(A)
print(eigenvalues)
print(eigenvectors)
五、随机数
# 创建一个 2 * 2 的随机数组
a = np.random.rand(2,2)
print(a)
# 产生标准正态分布的随机数组
b = np.random.randn(2, 2)
print(b)
# 生成一个 3 * 3 随机浮点数
random_number = np.random.random((3,3))
print(random_number)
# 创建一个0~9 的 形状为3 * 3 的随机数组
c = np.random.randint(0, 10, size=(3,3))
print(c)
六、类型转换
a = np.array([1., 2.2, 3.3])
# 转换数组的数据类型
b = a.astype(int) # 输出:[1 2 3]
print(b)
print(type(b))