例如,我有一个尺寸为3 x 3的2D数组。
[1 2 7
4 5 6
7 8 9]
我想删除所有包含7的列 - 所以第一个和第三个,输出3 x 1矩阵:
[2
5
8]
如何在python中执行此操作?我想将它应用于n x n维的大矩阵。
谢谢!
答案 0 :(得分:3)
#Creating array
x = np.array([[1, 2, 7],[4,5, 6],[7,8,9]])
x
Out[]:
array([[1, 2, 7],
[4, 5, 6],
[7, 8, 9]])
#Deletion
a = np.delete(x,np.where(x ==7),axis=1)
a
Out[]:
array([[2],
[5],
[8]])
答案 1 :(得分:1)
numpy
可以帮助您做到这一点!
import numpy as np
a = np.array([1, 2, 7, 4, 5, 6, 7, 8, 9]).reshape((3, 3))
b = np.array([col for col in a.T if 7 not in col]).T
print(b)
答案 2 :(得分:1)
如果你实际上不想删除原始矩阵的部分,你可以使用布尔索引:
a
Out[]:
array([[1, 2, 7],
[4, 5, 6],
[7, 8, 9]])
a[:, ~np.any(a == 7, axis = 1)]
Out[]:
array([[2],
[5],
[8]])
答案 3 :(得分:0)
您可以使用argwhere
作为列索引,然后删除。
import numpy
a = numpy.array([[5, 2, 4],[1, 7, 3],[1, 2, 7]])
index = numpy.argwhere(a==7)
y = numpy.delete(a, index, axis=1)
print(y)
答案 4 :(得分:0)
A = np.array([[1,2,7],[4,5,6],[7,8,9]])
for i in range(0,3):
... B=A[:,i]
... if(7 in B):
... A=np.delete(A,i,1)