numpy 2d和1d加法平

激动的

从NumPy开始使用NumPy Book中的示例时,我注意到了一个示例:

a = zeros((4, 5))
b = ones(6)
add(b, b, a[1:3, 0:3].flat)
print(a)

退货

array([[0, 0, 0, 0, 0]
       [2, 2, 2, 0, 0]
       [2, 2, 2, 0, 0]
       [0, 0, 0, 0, 0]])

但是,当我尝试此代码时,它导致以下错误:

add(b,b,a [1:3,0:3] .flat)

TypeError:返回数组必须为ArrayType”

有人可以阐明这个问题吗?

塞弗特

如果您有2个自变量,numpy.add则将它们作为的两个操作数added如果您提供3个参数,则前两个是添加的参数,第三个是result那么实际上不是结果,而是应该将结果保存在其中的数组。

因此,您添加bb并希望将其存储在中a[1:3, 0:3].flat

让我们只是尝试np.add(b, b)这给

import numpy as np
a = np.zeros((4, 5))
b = np.ones(6)
np.add(b, b)
# returns array([ 2.,  2.,  2.,  2.,  2.,  2.])

因此,现在我尝试a[1:3, 0:3].flat返回哪个<numpy.flatiter at 0x22204e80c10>这意味着它返回一个,iterator因此没有数组。但是我们不需要迭代器,而需要数组。有一种称为的方法ravel()所以尝试a[1:3, 0:3].ravel()返回:

array([ 0.,  0.,  0.,  0.,  0.,  0.])

所以我们有一个数组。特别是数组也可用于存储结果(相同的形状!)。所以我尝试了:

np.add(b, b, a[1:3, 0:3].ravel())
# array([ 2.,  2.,  2.,  2.,  2.,  2.])

但是,让我们看看是否a已更改:

a
#array([[ 0.,  0.,  0.,  0.,  0.],
#       [ 0.,  0.,  0.,  0.,  0.],
#       [ 0.,  0.,  0.,  0.,  0.],
#       [ 0.,  0.,  0.,  0.,  0.]])

所以a没有改变。那是因为ravel()如果可能的话,它仅返回一个视图(赋值将传播到未拆散的数组),否则返回一个副本。将结果保存在副本中是毫无意义的,因为out参数的全部意义在于该操作是就地完成的。我只是在猜测为什么要制作副本,但是我认为这是因为我们从更大的数组中取出一部分,而该部分在内存中并不连续。

因此,我建议您out在这种情况下不要使用参数,而应使用的返回值np.add并将其存储在的指定区域内a

a[1:3, 0:3] = np.add(b, b).reshape(2,3) # You need to reshape here!
a
#array([[ 0.,  0.,  0.,  0.,  0.],
#       [ 2.,  2.,  2.,  0.,  0.],
#       [ 2.,  2.,  2.,  0.,  0.],
#       [ 0.,  0.,  0.,  0.,  0.]])

a[1:3, 0:3].flat = np.add(b, b)可以。

我认为这本书已经过时,可以使用较旧的numpy版本,或者根本无法使用,这是本书中的一个错误。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Python numpy:列数组(2d)或列表(1d)

来自分类Dev

numpy:将2D数组乘以1D数组

来自分类Dev

是否可以对包含1D和2D numpy数组的Python代码进行矢量化处理?

来自分类Dev

numpy-用numpy 1d数组的排列副本构建2d数组的最快方法

来自分类Dev

如何在不使用numpy的情况下将2D列表展平为1D?

来自分类Dev

numpy将2D数组与1D数组连接

来自分类Dev

如何使用numpy从两个1D数组生成布尔2D数组

来自分类Dev

从1D重塑为2D numpy数组后,如何返回元素的位置(索引)?

来自分类Dev

在Numpy Python中将1d数组附加到2d数组

来自分类Dev

Python Numpy在带有2D数组的1D数组上相交1d

来自分类Dev

带有1列的Numpy重塑1d至2d数组

来自分类Dev

numpy:展平2D数组的某些列

来自分类Dev

展平2D数组1D和

来自分类Dev

2D ID数组和1D权重的加权numpy bincount

来自分类Dev

Numpy计算随机2D或1D数组中的Min Max

来自分类Dev

如何使用if条件在1D和2D numpy数组之间进行向量化计算

来自分类Dev

如何在1D数组上使用函数创建2D Numpy数组?

来自分类Dev

从2d numpy数组(成为1d numpy数组的一列)和1d np标签数组创建熊猫数据框

来自分类Dev

如何将numpy中的1D数组视为(1 x n)2D数组?

来自分类Dev

如何基于包含初始索引和最终索引的2个1D数组对2D numpy数组进行切片

来自分类Dev

Numpy的“形状”函数为2D数组返回1D值

来自分类Dev

用1D numpy数组制作2D

来自分类Dev

从2D NumPy数组中查找1D数组?

来自分类Dev

我应该如何用numpy将3d数组中的1d数组乘以2d矩阵

来自分类Dev

numpy:将索引的2D数组转换为1D数组以进行交集计算

来自分类Dev

从numpy 1D数组列表创建numpy 2D数组

来自分类Dev

在 numpy 数组列上迭代的循环(维数为 1D 或 2D)

来自分类Dev

带零的 numpy pad 创建 2d 数组而不是所需的 1d

来自分类Dev

当 x 轴为 1d Numpy 数组且 y 轴为 2d Numpy 数组时的散点图

Related 相关文章

  1. 1

    Python numpy:列数组(2d)或列表(1d)

  2. 2

    numpy:将2D数组乘以1D数组

  3. 3

    是否可以对包含1D和2D numpy数组的Python代码进行矢量化处理?

  4. 4

    numpy-用numpy 1d数组的排列副本构建2d数组的最快方法

  5. 5

    如何在不使用numpy的情况下将2D列表展平为1D?

  6. 6

    numpy将2D数组与1D数组连接

  7. 7

    如何使用numpy从两个1D数组生成布尔2D数组

  8. 8

    从1D重塑为2D numpy数组后,如何返回元素的位置(索引)?

  9. 9

    在Numpy Python中将1d数组附加到2d数组

  10. 10

    Python Numpy在带有2D数组的1D数组上相交1d

  11. 11

    带有1列的Numpy重塑1d至2d数组

  12. 12

    numpy:展平2D数组的某些列

  13. 13

    展平2D数组1D和

  14. 14

    2D ID数组和1D权重的加权numpy bincount

  15. 15

    Numpy计算随机2D或1D数组中的Min Max

  16. 16

    如何使用if条件在1D和2D numpy数组之间进行向量化计算

  17. 17

    如何在1D数组上使用函数创建2D Numpy数组?

  18. 18

    从2d numpy数组(成为1d numpy数组的一列)和1d np标签数组创建熊猫数据框

  19. 19

    如何将numpy中的1D数组视为(1 x n)2D数组?

  20. 20

    如何基于包含初始索引和最终索引的2个1D数组对2D numpy数组进行切片

  21. 21

    Numpy的“形状”函数为2D数组返回1D值

  22. 22

    用1D numpy数组制作2D

  23. 23

    从2D NumPy数组中查找1D数组?

  24. 24

    我应该如何用numpy将3d数组中的1d数组乘以2d矩阵

  25. 25

    numpy:将索引的2D数组转换为1D数组以进行交集计算

  26. 26

    从numpy 1D数组列表创建numpy 2D数组

  27. 27

    在 numpy 数组列上迭代的循环(维数为 1D 或 2D)

  28. 28

    带零的 numpy pad 创建 2d 数组而不是所需的 1d

  29. 29

    当 x 轴为 1d Numpy 数组且 y 轴为 2d Numpy 数组时的散点图

热门标签

归档