python - 在二维坐标数组上调用函数的最有效方法是什么?
问题描述
我有一个大小为(M,N,3)的ndarray。它拥有 M x N 个点,每个点都由其 x、y 和 z 坐标标识。我也有一个函数'foo'。'foo' 将一个点作为一个大小为 (, 3) 的 ndarray。有没有比使用两个嵌套 for 循环更快的方法在我的数组中的每个 M x N 点上调用“foo”?
到目前为止,这是我尝试过的。我的数组是变量'sample_array'。
num_rows = sample_array.shape[0]
num_columns = sample_array.shape[1]
solution = np.zeros((num_rows, num_columns))
for row in range(num_rows):
for column in range(num_columns):
point = sample_array[row, column]
solution[row, column] = foo(point)
我找到了这个答案,它描述了使用这两种解决方案:
np.vectorize(foo)
np.array(map(foo, sample_array))
但是,我不确定如何指定我不希望函数映射到 M x N x 3 浮点数中的每一个。相反,我希望它映射要在每个 M x N (, 3) ndarray 上调用的函数。
谢谢!
解决方案
您可以尝试np.apply_along_axis(function, axis=2, arr=your_input_array)
沿第 3 轴对数组进行切片并将函数应用于每个切片,即点。
在这里找到文档np.apply_along_axis
推荐阅读
- c - 按副本或按引用排队
- twitter-bootstrap - React Bootstrap 下拉菜单
- html - Metro UI 透明度
- python - Referring to a member as a variable in Discord.py
- javascript - 设置和获取请求而不刷新页面
- javascript - 在将数据作为道具传递时未定义
- c++ - 通过动态分配插入 List 元素
- python - 用于 gzip 文件的 pandas read_csv 未推断数字列类型
- google-apps-script - 用于页眉和页脚的 Google 表格脚本
- loops - ZF2 依赖注入中的无限循环