目录
有关矩阵行列交换问题
法一
法二
行进行互换
列进行互换
insert函数
delete函数
append函数
where函数
默认第一个为行索引第二个为列索引。
行列索引都是以作为起始数值作为第一列或者第一行。(根据c++数组的知识进行理解)
有关矩阵行列交换问题
法一
使用矩阵的分裂和拼接函数逐个进行分解和拼接。法一的执行效率会很低。同样的一个问题需要进行反复的拼接才可以完成。
import numpy as np
a=np.arange(20).reshape(4,5)
b=np.split(a,4,axis=0)
s=np.vstack((b[2],b[3]))
s=np.vstack((b[0],s))
s=np.vstack((b[1],s))
w=np.split(s,5,axis=1)
ans=np.hstack((w[3],w[4]))
ans=np.hstack((w[2],ans))
ans=np.hstack((w[0],ans))
ans=np.hstack((w[1],ans))
print(ans)
法二
直接进行行列互换(按照特定格式)。
行进行互换
数组名[ [交换行1,交换行2 ] ] = 数组名[ [交换行2, 交换行1 ] ]
import numpy as np
b=np.arange(20).reshape(5,4)
b[[0,1]]=b[[1,0]]
#写完整是这样 b[[0,1],:]=b[[1,0],:]
print(b)
上述的行进行互换,即b[[0,1]]=b[[1,0]]指的就是将第一行和第二行的元素进行互换。
列进行互换
数组名[ : ,[交换列1,交换列2 ] ] = 数组名[ : ,[交换列2,交换列1] ]
b=np.arange(20).reshape(5,4)
# b[[0,1]]=b[[1,0]]
print(b)
b[:,[0,1]]=b[:,[1,0]]
print(b)
上述的列进行互换,即b[:,[0,1]]=b[:,[1,0]]指的就是将第一列和第二列的元素进行互换
insert函数
np.insert(a,1,[0,0,0,0],0)
第四个参数表示航增加还是列增加(axis=0表示行增加,axis=1表示列增加。)
上述代码表示把[0,0,0,0]插入到a中,插入在第二行。
delete函数
np.delete(a,0,1) #删除含有0的列
append函数
np.append(a, [[1,2,3,4]], 0) #末尾修改
where函数
np.where(a==1) #查找含有1的