numpy矩阵操作(delete,insert,append)

最近码代码需要对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)结果一致,尾部添加即为最后行或列的插入操作。

 

  • 7
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值