我有一系列条件可能因选择的名称而异。我想知道是否有一种方法可以从一组字符串构造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]
答案 0 :(得分:1)
您可以评估文字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
将始终生成相同的输出。