Numpy:使用条件对一维数组进行索引

Numpy: indexing on one dimensional arrays with a condition

我必须使用 x 轴上的条件对 x 轴和 y 轴进行索引。 我试过像这样使用 np.where 函数:

x = data[:, 0]
y = data[:, 1]
y = y[np.where((x < 111) or (x > 125))]
x = x[np.where((x < 111) or (x > 125))]

但它打印出以下错误:

The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

我尝试使用 np.all 然后像这样:

x = data[:, 0]
y = data[:, 1]
y = y[np.all([(x < 111) or (x > 125)], axis = 0)]
x = x[np.all([(x < 111) or (x > 125)], axis = 0)]

但是还是出现同样的错误,我是不是把'or'条件做错了? 提前致谢。

对于数组,使用 numpy logical 方法,标准 python 条件 andor 效果不佳。

x = data[:, 0]
y = data[:, 1]
y = y[np.logical_or((x < 111), (x > 125))]
x = x[np.logical_or((x < 111), (x > 125))]

尝试使用按位运算符而不是 or|

x = data[:, 0]
y = data[:, 1]
y = y[np.where((x < 111) | (x > 125))]
x = x[np.where((x < 111) | (x > 125))]

告诉我它是否适合你。

试试这个:

import numpy as np

# test data
x = np.arange(0, 200)

# conditions:
# values wanted that are smaller than 111 and bigger than 125
cond1 = 111 > x
cond2 = x > 125

# get data that satisfies both conditions
x *= np.logical_or(cond1, cond2)

# (optional) remove zeros
x = x.nonzero()