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

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

来自分类Dev

用1D numpy数组制作2D

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

展平2D数组1D和

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

Related 相关文章

  1. 1

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

  2. 2

    用1D numpy数组制作2D

  3. 3

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

  4. 4

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

  5. 5

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

  6. 6

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

  7. 7

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

  8. 8

    展平2D数组1D和

  9. 9

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

  10. 10

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

  11. 11

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

  12. 12

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

  13. 13

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

  14. 14

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

  15. 15

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

  16. 16

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

  17. 17

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

  18. 18

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

  19. 19

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

  20. 20

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

  21. 21

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

  22. 22

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

  23. 23

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

  24. 24

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

  25. 25

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

  26. 26

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

  27. 27

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

  28. 28

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

  29. 29

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

热门标签

归档