最近码代码需要对numpy的矩阵做一定处理,网上也看到前辈们的贡献,这里也做个简单的归纳。
numpy矩阵操作主要有delete()、insert()、append()等函数,分别执行删除、插入和添加的操作,注意append可以看为insert函数的特殊情况,即在尾部补充可以看为插入最后一行或列,这在后文会举例说明。
delete()函数
# numpy.delete(arr,obj,axis=None)
# axis 表明哪个维度的向量应该被移除
# axis 如果为None,则需要先将矩阵拉平,在删去第obj的元素
# obj 表明axis维度的哪一行(或列)应该被移除
现在我们举例说明下
import numpy as np
matrix = [
[1,2,3,4],
[5,6,7,8],
[9,10,11,12]
]
p1 = np.delete(matrix, 1, 0) # 第0维度(行)第1行被删除(初始行为0行)
print('>>>>p1>>>>\n',p1)
p2 = np.delete(matrix, 1, 1) # 第1维度(列)第1行被删除
print('>>>>p2>>>>\n',p2)
p3 = np.delete(matrix, 1) # 拉平后删除第1个元素(初始为第0个)
print('>>>>p3>>>>\n',p3)
p4 = np.delete(matrix, [0,1], 1) # 第1维度(列)第0、1行被删除
print('>>>>p4>>>>\n',p4)
结果:
>>>>p1>>>>
[[ 1 2 3 4]
[ 9 10 11 12]]
>>>>p2>>>>
[[ 1 3 4]
[ 5 7 8]
[ 9 11 12]]
>>>>p3>>>>
[ 1 3 4 5 6 7 8 9 10 11 12]
>>>>p4>>>>
[[ 3 4]
[ 7 8]
[11 12]]
insert()函数
# numpy.insert(arr,obj,value,axis=None)
# value 为插入的数值
# arr 为目标向量
# obj 为目标向量的axis维度的目标位置
# axis 为想要插入的维
举例如下
import numpy as np
matrix = [
[1,2,3,4],
[5,6,7,8],
[9,10,11,12]
]
q1 = np.insert(matrix, 1, [1,1,1,1], 0) # 第0维度(行)第1行添加[1,1,1,1]
print('>>>>q1>>>>\n',q1)
q2 = np.insert(matrix, 0, [1,1,1], 1) # 第1维度(列)第0列添加[1,1,1](列)
print('>>>>q2>>>>\n',q2)
q3 = np.insert(matrix, 3, [1,1,1,1], 0) # 第0维度(行)第3行添加[1,1,1,1]
print('>>>>q3>>>>\n',q3)
>>>>q1>>>>
[[ 1 2 3 4]
[ 1 1 1 1]
[ 5 6 7 8]
[ 9 10 11 12]]
>>>>q2>>>>
[[ 1 1 2 3 4]
[ 1 5 6 7 8]
[ 1 9 10 11 12]]
>>>>q3>>>>
[[ 1 2 3 4]
[ 5 6 7 8]
[ 9 10 11 12]
[ 1 1 1 1]]
append()函数
# numpu.append(arr,values,axis=None)
# 将values插入到目标arr的最后,其中values与arr应该有相同维度,具体见例子
例子如下
import numpy as np
matrix = [
[1,2,3,4],
[5,6,7,8],
[9,10,11,12]
]
m1 = np.append(matrix,[[1,1,1,1]],axis=0)
# 第0维度(行)尾部添加[[1,1,1,1]],注意两个[],相同维度
print('>>>>m1>>>>\n',m1)
m2 = np.append(matrix,[[1],[1],[1]],axis=1)
# 第1维度(列)尾部添加[[1],[1],[1]],注意两个[],相同维度
print('>>>>m2>>>>\n',m2)
m3 = np.append(matrix,[1,1,1,1])
# 拉平后再尾部添加[1,1,1,1],这里可以[[1,1,1,1]]和[1,1,1,1]均可
print('>>>>m3>>>>\n',m3)
>>>>m1>>>>
[[ 1 2 3 4]
[ 5 6 7 8]
[ 9 10 11 12]
[ 1 1 1 1]]
>>>>m2>>>>
[[ 1 2 3 4 1]
[ 5 6 7 8 1]
[ 9 10 11 12 1]]
>>>>m3>>>>
[ 1 2 3 4 5 6 7 8 9 10 11 12 1 1 1 1]
注意 m1 = np.append(matrix,[[1,1,1,1]],axis=0) 与 q3 = np.insert(matrix, 3, [1,1,1,1], 0)结果一致,尾部添加即为最后行或列的插入操作。