如果列具有指定的元素,如何从numpy数组中删除列? (蟒蛇)

时间:2017-06-15 06:22:59

标签: python numpy

例如,我有一个尺寸为3 x 3的2D数组。

 [1 2 7

  4 5 6

  7 8 9]

我想删除所有包含7的列 - 所以第一个和第三个,输出3 x 1矩阵:

 [2

  5

  8]

如何在python中执行此操作?我想将它应用于n x n维的大矩阵。

谢谢!

5 个答案:

答案 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)