用NumPy迭代和修改数组

2024-06-18 19:18:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个向量x和{},它们的长度都是用NumPy定义的。在

如何遍历x并修改y中的值?在

我是说

ingredients = empty(cakes.shape)
for ingredient, cake in np.nditer([ingredients,cakes]):
    ingredient = cake * 2 + 2

Tags: innumpyfor定义np向量emptycake
3条回答

你可能想处理向量而不是循环?在

In [144]: cakes = np.array([2, 3])

In [145]: cakes * 2 + 2
Out[145]: array([6, 8])

正如其他人所说,使用向量化通常更好/更快/更好。。。在

但是如果你有充分的理由使用迭代,你当然可以这么做。在

我刚从the official documentation复制了这个:

>>> a = np.arange(6).reshape(2,3)
>>> a
array([[0, 1, 2],
       [3, 4, 5]])
>>> for x in np.nditer(a, op_flags=['readwrite']):
...     x[...] = 2 * x
...
>>> a
array([[ 0,  2,  4],
       [ 6,  8, 10]])

您的示例不起作用,因为component不是可变的数据类型,它是一个int或float以及更大结构中的一个元素——您必须修改更大的结构。在

尽管如此,numpyonic的方法看起来像:

ingredient = cakes * 2 + 2

numpy的最大优点是它的向量化语句,就像下面这样。在

相关问题 更多 >