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 条件 and
和 or
效果不佳。
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()
我必须使用 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 条件 and
和 or
效果不佳。
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()