我在numpy中有一個大的3維數組(可以說大小爲100x100x100)。我想多次遍歷它的一部分(大約70%的元素),並且我有一個相同大小的布爾矩陣,並定義元素是否應該完成操作。如何加速對numpy數組的部分迭代
我的當前方法是首先創建形狀的陣列「COORDS」(N,3),它包含所有的COORDS上其中進行操作,然後
for i in np.arange(many_iterations):
for j in coords:
large_array[j] = do_something(large_array[tuple(j)])
難道實際上是更好評估整個數組並在循環中包含一個額外的操作來測試布爾數組(記住,真實評估然後進行many_iterations次而不是一次)。我的想法是,在這種情況下的回報將擺脫for循環
large_array = do_something(large_array if condition True)
這最後一行怎麼會在這種情況下工作?
根據'do_something'是什麼,你可以做'large_array [boolean_array] = do_something(large_array [boolean_array])',或者更短的東西。 –
我認爲你的觀點是對的,對整個數組執行操作然後使用類似'numpy.where'的東西可能對你有好處。 –