質問の最初の文によると、別のリストまたは配列の値に基づいて値を選択したいと考えています。
numpy では、インデックスを使用して配列から選択した値を取得できます。この例では、ブール インデックスを使用しています。これにより、既存の配列に値を追加する必要がなくなりますが、選択した値のコピーが配列として提供されます。&
or|
演算子、numpyの論理関数、または独自の関数を使用して、複数の条件を組み合わせることができます。
In [1]: import numpy as np
In [2]: size = int(1E7)
In [3]: ar = np.arange(size)
In [4]: ar2 = np.random.randint(100, size=size)
In [5]: %timeit ar[(ar2 > 50) & (ar2 < 70) | (ar2 == 42)]
10 loops, best of 3: 249 ms per loop
異なる条件 (またはコメントで指定された範囲) に基づいて個別の配列ですべての選択が必要な場合は、次のようにすることができます。
conditions = [(10, 20), (20, 50)] # min, max as tuples in a list
results = {}
for condition in conditions:
selection = ar[(ar2 > condition[0]) & (ar2 < condition[1])]
# do something with the selection ?
results[condition] = selection
print results
そのようなものをあなたに与えるでしょう
{(20, 50): array([ 2, 6, 7, ..., 9999993, 9999997, 9999998]),
(10, 20): array([ 1, 3, 66, ..., 9999961, 9999980, 9999999])}
一般に、numpy 配列をループすることは避けてください。代わりに、ベクトル化された関数を使用して配列を操作してください。