我有一系列条件,具体取决于选择名称。我想知道是否有一种方法可以从一组字符串中构造条件到python numpy。下面有一个示例程序。我希望能够在a[ind]的两个实例中获得相同的结果。

import numpy as np

a = np.arange(10)
ind = np.where((a>6) | (a<3))
print a[ind]

select = 'c'
if (select == 'c'):
    sel0 = '(a>6)'

sel = sel0 + ' | (a<3)'
print sel

ind = np.where(sel)
print a[ind]


这是我目前得到的输出:

[0 1 2 7 8 9]
(a>6) | (a<3)
[0]

最佳答案

您可以评估文字sel

ind = np.where(eval(sel))
print(a[ind])
# [0 1 2 7 8 9]




但是,为什么还要使用字符串文字呢?

select = 'c'
if select == 'c':
    sel0 = a>6

sel = sel0 | (a<3)
print(sel)

ind = np.where(sel)
print(a[ind])
# [0 1 2 7 8 9]


只要条件遵循相同的操作顺序,实际上对条件的评估并不重要。无论您在哪里评估条件,sel始终等于:

[ True  True  True False False False False  True  True  True]


使用该布尔数组,where将始终产生相同的输出。

关于python - 将条件从字符串传递到numpy,其中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49693682/

10-12 18:13