我有一系列条件,具体取决于选择名称。我想知道是否有一种方法可以从一组字符串中构造条件到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/