总是记不住函数用法,在这儿整理一下。
1.np.array()
:创建数组。
import numpy as np
arr = np.array([1, 2, 3]) # 一维数组
arr_2d = np.array([[1, 2], [3, 4]]) # 二维数组
2.np.arange()
:生成等差数列
arr = np.arange(0, 10, 2) # 输出:[0 2 4 6 8]
3.np.linspace()
:生成均匀间隔的数值
arr = np.arange(0, 10, 2) # 输出:[0 2 4 6 8]
4.np.zeros() / np.ones():全0或全1数组
zeros = np.zeros((2, 3)) # 2行3列全0数组
ones = np.ones((3, 2)) # 3行2列全1数组
5.np.random:随机数组
rand_arr = np.random.rand(2, 2) # 2x2的[0,1)随机数
randint_arr = np.random.randint(0, 10, size=(3, 3)) # 0-9的3x3随机整数
6.reshape():改变数组形状
arr = np.arange(6).reshape(2, 3) # 将一维数组转为2x3
7.concatenate() / vstack() / hstack():合并数组
a = np.array([1, 2])
b = np.array([3, 4])
c = np.concatenate([a, b]) # 输出:[1 2 3 4]
d = np.vstack([a, b]) # 垂直堆叠成2x2数组
e = np.hstack([a.reshape(2,1), b.reshape(2,1)]) # 水平堆叠
8.split():分割数组
arr = np.arange(6)
result = np.split(arr, 3) # 将数组分为3个子数组
9.transpose()
/ .T
:转置
arr = np.array([[1, 2], [3, 4]])
arr_transposed = arr.T # 转置为 [[1, 3], [2, 4]]
10.基本运算(逐元素计算)
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
c = a + b # 加法:[5 7 9]
d = a * b # 乘法:[4 10 18]
e = np.sin(a) # 计算正弦值
11.np.dot():矩阵乘法
A = np.array([[1, 2], [3, 4]])
B = np.array([[5, 6], [7, 8]])
C = np.dot(A, B) # 矩阵乘法:[[19 22], [43 50]]
12.聚合函数
arr = np.array([[1, 2], [3, 4]])
sum_all = np.sum(arr) # 总和:10
sum_axis0 = np.sum(arr, axis=0) # 沿列求和:[4 6]
mean_val = np.mean(arr) # 均值:2.5
max_val = np.max(arr) # 最大值:4
13.np.unique():去重并排序
arr = np.array([2, 1, 2, 3, 1])
unique_arr = np.unique(arr) # 输出:[1 2 3]
14.np.where():条件筛选
arr = np.array([1, 2, 3, 4])
indices = np.where(arr > 2) # 返回索引:(array([2, 3]),)
values = arr[indices] # 输出:[3 4]
15.布尔索引
mask = arr % 2 == 0 # 找出偶数
even_numbers = arr[mask] # 输出:[2 4]
16.np.linalg.inv():矩阵求逆
A = np.array([[1, 2], [3, 4]])
A_inv = np.linalg.inv(A) # 逆矩阵
17.np.linalg.det():矩阵行列式
det = np.linalg.det(A) # 行列式值:-2.0
18.np.linalg.eig():特征值和特征向量
eigenvalues, eigenvectors = np.linalg.eig(A)
19.允许不同形状的数组进行算术运算:
a = np.array([[1, 2], [3, 4]])
b = np.array([10, 20])
c = a + b # b被广播为 [[10,20], [10,20]],结果:[[11 22], [13 24]]
20.保存/加载数组
np.save('data.npy', arr) # 保存为二进制文件
loaded_arr = np.load('data.npy') # 加载文件
np.savetxt('data.txt', arr) # 保存为文本文件
常用技巧
1.轴(axis)参数:
axis=0 沿列操作(如求每列的和)
axis=1 沿行操作(如求每行的最大值)
2.数据类型转换
arr = arr.astype(np.float32) # 转换为浮点型
3.向量化操作:
避免使用循环,直接操作整个数组:
# 计算平方和
squared_sum = np.sum(arr ** 2)