【发布时间】:2021-03-07 20:25:15
【问题描述】:
我有一个 vtkVolume,我必须检查所有体素以在某些列表中保持点的坐标具有特定值。例如,如果可能的值为 3(例如 0、1、2),我必须检查体积的所有体素,并在 3 个不同的列表中保存值为 0 的点的坐标,那些具有值 1 和值 2。
使用 numpy 最有效的方法是什么?我尝试使用一些经典的嵌套 for 循环来迭代具有形状 (512, 512, 359) 的整个体积,但耗时太长。
【问题讨论】:
-
没有一种有效的迭代方式,至少没有 Python 代码。
numpy编译的方法可以有效地迭代,但您仅限于提供的方法。有像numba和cython这样的工具用于编写您自己的编译代码。但是对于 Python 中的迭代,列表,甚至是嵌套列表,都比数组好。您需要阅读更多numpy基础知识。 -
其实我是在求一些numpy的内置方法,因为我用numpy.place()在给定条件下替换值,速度非常快。为此,它必须遍历整个卷,这正是我想要有效地做的事情。感谢您的建议