Python 如果未达到阈值,则删除numpy数组中的子数组

Python 如果未达到阈值,则删除numpy数组中的子数组,python,arrays,numpy,Python,Arrays,Numpy,我有以下np数组结构: [[1, 2, 3 ,4] [5, 7, 8 ,6] . . [7, 5, 1 ,0]] 我们要做的是在不满足阈值的情况下删除子阵列。 例如,在[5,7,8,6]中,如果位置0不在2和4之间,我想删除这个数组。我想对整个numpy数组执行此操作,并打算对子数组中的所有位置设置阈值 我的思维过程如下所示: for arr in data: if arr[0] < 2 or arr[0] > 4: np.delete(

我有以下np数组结构:

[[1, 2, 3 ,4]
[5, 7, 8 ,6]
     .
     .
[7, 5, 1 ,0]]
我们要做的是在不满足阈值的情况下删除子阵列。 例如,在[5,7,8,6]中,如果位置0不在2和4之间,我想删除这个数组。我想对整个numpy数组执行此操作,并打算对子数组中的所有位置设置阈值

我的思维过程如下所示:

for arr in data:
    if arr[0] < 2 or arr[0] > 4:
        np.delete(data, arr)
对于arr in数据:
如果arr[0]<2或arr[0]>4:
np.删除(数据,arr)
但是,打印data.shape前后没有显示任何差异。有人能帮我吗


谢谢

为测试创建示例数据:

>>> import numpy as np
>>> data = np.array([
... [1,2,3,4],
... [5,7,8,9],
... [7,5,1,0]
... ])
可以对数组进行切片以获得第一列:

>>> data[:, 0]
array([1, 5, 7])
通过在比较运算符之间广播比较运算符,找出这些第一列值中的哪一个在范围内(请注意,我们不能链接这些运算符,必须使用按位而不是逻辑and、)组合它们):

>first=数据[:,0]

>>>(4>数据[(4创建用于测试的示例数据:

>>> import numpy as np
>>> data = np.array([
... [1,2,3,4],
... [5,7,8,9],
... [7,5,1,0]
... ])
可以对数组进行切片以获得第一列:

>>> data[:, 0]
array([1, 5, 7])
通过在比较运算符之间广播比较运算符,找出这些第一列值中的哪一个在范围内(请注意,我们不能链接这些运算符,必须使用按位而不是逻辑and、)组合它们):

>first=数据[:,0]

>>>(4>数据[(4要理解
np.delete
方法不起作用的原因,请首先阅读文档(您会注意到它创建了一个新数组,随后会忽略该数组)。但是,修复该问题仍然会给您带来问题,因为您将在迭代序列时尝试修改序列。要了解
np.delete
方法不起作用的原因,请首先阅读文档(您会注意到它创建了一个新数组,随后您将忽略该数组)。但是,修复该问题仍然会给您带来问题,因为您将在迭代序列时尝试修改序列。