【问题标题】:Numpy append to empty arrayNumpy追加到空数组
【发布时间】:2021-04-15 02:00:51
【问题描述】:

我想将一个 numpy 数组附加到一个空的 numpy 数组,但它不起作用。

reconstructed = numpy.empty((4096,))
to_append = reconstruct(p, e_faces, weights, mu, i)

# to_append=array([129.47776809, 129.30775937, 128.90932868, ..., 103.64777681, 104.99912816, 105.93984307]) It's shape is (4096,)

numpy.append(reconstructed, to_append, axis=0)
#Axis is not working anyway.

请帮助我。我想把那个长数组放在空数组中。结果只是空的。

【问题讨论】:

  • 不要尝试这样做。 emptyappend 不是列表克隆。
  • 列出克隆是什么意思?
  • 能不能把to_append列表的个数传过来或者举个例子?
  • 您是否阅读过两者的文档?
  • # to_append=array([129.47776809, 129.30775937, 128.90932868, ..., 103.64777681, 104.99912816, 105.93984307]) 它的形状是 (4096,) 我已经写过了?

标签: python numpy append


【解决方案1】:

看看empty 产生了什么:

In [140]: x = np.empty((5,))
In [141]: x
Out[141]: array([0.  , 0.25, 0.5 , 0.75, 1.  ])

append 创建一个新数组;它不会改变x

In [142]: np.append(x, [1,2,3,4,5], axis=0)
Out[142]: array([0.  , 0.25, 0.5 , 0.75, 1.  , 1.  , 2.  , 3.  , 4.  , 5.  ])
In [143]: x
Out[143]: array([0.  , 0.25, 0.5 , 0.75, 1.  ])

我们必须将它分配给一个新变量:

In [144]: y = np.append(x, [1,2,3,4,5], axis=0)
In [145]: y
Out[145]: array([0.  , 0.25, 0.5 , 0.75, 1.  , 1.  , 2.  , 3.  , 4.  , 5.  ])

看看y——那些在x中的随机值也在y中!

与列表对比

In [146]: alist = []
In [147]: alist
Out[147]: []
In [148]: alist.append([1,2,3,4,5])
In [149]: alist
Out[149]: [[1, 2, 3, 4, 5]]

结果非常不同。不要将此作为创建数组的模型。

如果您需要逐行构建数组,请使用列表追加将行收集到一个列表中,然后从中制作数组。

In [150]: z = np.array(alist)
In [151]: z
Out[151]: array([[1, 2, 3, 4, 5]])

【讨论】:

  • 哇!太感谢了。明白了不要构建一个空数组来追加!
猜你喜欢
  • 1970-01-01
  • 2013-11-07
  • 1970-01-01
  • 1970-01-01
  • 2015-02-21
  • 2021-07-14
  • 1970-01-01
  • 2016-08-19
  • 2018-01-14
相关资源
最近更新 更多