我在 numpy 中有一个大型 3 维数组(可以说大小为 100x100x100)。我想多次迭代它的一部分(大约 70% 的元素),我有一个大小相同的布尔矩阵,它定义了元素是否应该完成操作。
我目前的方法是首先创建一个形状为 (N,3) 的数组“坐标”,其中包含要执行操作的所有坐标,然后
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)
在这种情况下如何使最后一行工作?