【发布时间】:2013-05-11 12:55:06
【问题描述】:
如何在 C 中执行 numpy-nd-array 与任意双标量的元素乘法?
我正在寻找这样的 api 函数:
// C-code
PyArray_MultiplyWithScalar((PyArrayObject *) myarray, double scalar_value);
对应纯numpy:
# pure python
myarray = myarray * scalar_value
我当前(不好的)解决方案是遍历所有条目并手动执行规范化。
【问题讨论】:
-
我不认为有这样的事情。使用
NpyIter_New遍历数组。否则你当然可以将 scalar_value 转换为数组并通过 python 调用 ufunc。 -
啊,您需要设置正确的标志,即
NPY_ITER_GROWINNER和NPY_ITER_EXTERNAL_LOOP以获得最佳速度,这涉及更多内容,但可能值得学习。 -
我已经看到所有这些带有标志的迭代器,但我希望有一个更好/更短的解决方案 :-) 我认为增加优化的迭代器会花费函数调用......
-
不,它没有 external_loop。有了它,你就可以自己实现最里面的循环,而那个最里面的循环往往就是整个数组。
-
你找到答案了吗?