前提・実現したいこと
多次元配列
pDM = [[1, 2, 3], [10, 20, 30], [40, 50, 60],[70, 80, 90],[100, 200, 300]]
というものを以下のように並列化してnp.whereでの条件を満たすpDMの行のindexを取り出したいです。(実際扱うpDMの行数が10000000行以上ですので並列化を行おうと思っております)コードは次のように作成しました。
python
1from multiprocessing import Pool 2import numpy as np 3 4NTask = 16 5pDM = [[1, 2, 3], [10, 20, 30], [40, 50, 60],[70, 80, 90],[100, 200, 300]] 6 7def find_DM_adress(j): 8 found_DMad = np.where((10 < pDM[:, 0] < 70) & (2 < pDM[:, 1] < 100)) 9 return found_DMad 10 11if __name__ == "__main__": 12 p = Pool(NTask) 13 DM_adress = p.map(find_DM_adress, range(len(pDM.shape[0]))) 14 print('now finding DM_adress....') 15 print('complete DM adress!!') 16 print(len(adress))
発生している問題・エラーメッセージ
Traceback (most recent call last): File "○○.py", line 154, in <module> DM_adress = np.where((10 < pDM[:, 0] < 70) & (2 < pDM[:, 1] < 100)) ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.a.ll()
該当しているValueErrorはネットでも出てきましたが、私の状況と合うものを上手く見つけることができませんでしたのでこちらにてお伺いいたします。
宜しくお願いいたします。
補足情報(FW/ツールのバージョンなど)
python3