Python 如何基于单个列删除numpy数组中的行?

Python 如何基于单个列删除numpy数组中的行?,python,numpy,Python,Numpy,我有一个2d numpy浮点数组,我想删除该行第三列包含小于x的值的所有行 例如,[[3,4,5],[3,3,8],[4,2,1],[1,2,1],使用阈值2,输出[[3,4,5],[3,3,8],试试这个: >>将numpy作为np导入 >>>x=np.数组([[3,4,5],[3,3,8],[4,2,1],[1,2,1]) >>>x=x[x[:,2]>=2] >>>x 数组([[3,4,5], [3, 3, 8]]) 试试这个: >>将numpy作为np导入 >>>x=np.数组([[3,4

我有一个2d numpy浮点数组,我想删除该行第三列包含小于
x
的值的所有行

例如,
[[3,4,5],[3,3,8],[4,2,1],[1,2,1]
,使用阈值
2
,输出
[[3,4,5],[3,3,8]
,试试这个:

>>将numpy作为np导入
>>>x=np.数组([[3,4,5],[3,3,8],[4,2,1],[1,2,1])
>>>x=x[x[:,2]>=2]
>>>x
数组([[3,4,5],
[3, 3, 8]])
试试这个:

>>将numpy作为np导入
>>>x=np.数组([[3,4,5],[3,3,8],[4,2,1],[1,2,1])
>>>x=x[x[:,2]>=2]
>>>x
数组([[3,4,5],
[3, 3, 8]])

您可以使用列表:

import numpy as np

arr = np.array([[3,4,5],[3,3,8],[4,2,1],[1,2,1]])

threshold = 2

arr = np.array([row for row in arr if row[2] >= threshold])

print(arr)
输出:

[[3 4 5]
 [3 3 8]]
或者,您可以使用
过滤器

np.array([*filter(lambda r : r[2] >= threshold, arr)])

您可以使用列表:

import numpy as np

arr = np.array([[3,4,5],[3,3,8],[4,2,1],[1,2,1]])

threshold = 2

arr = np.array([row for row in arr if row[2] >= threshold])

print(arr)
输出:

[[3 4 5]
 [3 3 8]]
或者,您可以使用
过滤器

np.array([*filter(lambda r : r[2] >= threshold, arr)])
试试这个:

import numpy as np

array = np.array([[3,4,5],[3,3,8],[4,2,1],[1,2,1]])
array = np.array([x for x in array if x[2] >  2])
print (array)
试试这个:

import numpy as np

array = np.array([[3,4,5],[3,3,8],[4,2,1],[1,2,1]])
array = np.array([x for x in array if x[2] >  2])
print (array)

向上投票..作为旁注,如果任何一列中有一个2(如果OP感兴趣),则此操作有效:x[np.all(x>2,axis=1)]向上投票..作为旁注,如果任何一列中有一个2(如果OP感兴趣),则此操作有效:x[np.all(x>2,axis=1)]