2013-05-16 30 views
3

如何在C中使用任意双标量执行numpy -nd数组的元素乘法?numpy C-API:C中的标量乘法

我在寻找这样的API函数:

// C-code 
PyArray_MultiplyWithScalar((PyArrayObject *) myarray, double scalar_value); 

相当于纯numpy的:

# pure python 
myarray = myarray * scalar_value 

我现在的(坏)的解决方案是遍历所有条目,手动执行标准化。

+0

我不认为有这样的事情。使用'NpyIter_New'来遍历数组。否则,您可以将scalar_value转换为数组,然后通过python调用ufunc。 – seberg

+1

嗯,你需要设置正确的标志,即'NPY_ITER_GROWINNER'和'NPY_ITER_EXTERNAL_LOOP'以获得最佳速度,这会得到更多的参与,但它可能是值得学习的。 – seberg

+0

我已经看到所有这些带有标志的迭代器,但我希望有一个更好/更短的解决方案:-)我认为增加优化的迭代器成本functioncall ... – Hensing

回答

0

我不知道你的问题的正确答案,但如果你在C中做一个循环,应该尽可能快,否则我会比调用python api函数更快,如果你做得对。这样做,您甚至可以在不需要额外内存的情况下就地编辑阵列。

+0

我认为/希望numpy有它自己的**最好的方法**迭代所有条目而不需要额外的内存。 – Hensing