python - 未成功追加到空 NumPy 数组

标签 python arrays numpy append

我正在尝试使用 append 用值填充一个空(不是 np.empty!)数组,但我遇到了错误:

我的代码如下:

import numpy as np
result=np.asarray([np.asarray([]),np.asarray([])])
result[0]=np.append([result[0]],[1,2])

我得到了:

ValueError: could not broadcast input array from shape (2) into shape (0)

最佳答案

我可能理解错了这个问题,但是如果你想声明一个特定形状但里面没有任何东西的数组,以下可能会有所帮助:

初始化空数组:

>>> a = np.zeros((0,3)) #or np.empty((0,3)) or np.array([]).reshape(0,3)
>>> a
array([], shape=(0, 3), dtype=float64)

现在您可以使用此数组向其追加形状相似的行。请记住,numpy 数组是不可变的,因此每次迭代都会创建一个新数组:

>>> for i in range(3):
...     a = np.vstack([a, [i,i,i]])
...
>>> a
array([[ 0.,  0.,  0.],
       [ 1.,  1.,  1.],
       [ 2.,  2.,  2.]])

np.vstack 和 np.hstack 是组合 numpy 数组最常用的方法,但来自 Matlab 我更喜欢 np.r_ 和 np.c_:

连接一维:

>>> a = np.zeros(0)
>>> for i in range(3):
...     a = np.r_[a, [i, i, i]]
...
>>> a
array([ 0.,  0.,  0.,  1.,  1.,  1.,  2.,  2.,  2.])

连接行:

>>> a = np.zeros((0,3))
>>> for i in range(3):
...     a = np.r_[a, [[i,i,i]]]
...
>>> a
array([[ 0.,  0.,  0.],
       [ 1.,  1.,  1.],
       [ 2.,  2.,  2.]])

连接列:

>>> a = np.zeros((3,0))
>>> for i in range(3):
...     a = np.c_[a, [[i],[i],[i]]]
...
>>> a
array([[ 0.,  1.,  2.],
       [ 0.,  1.,  2.],
       [ 0.,  1.,  2.]])

关于python - 未成功追加到空 NumPy 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19646726/

相关文章:

Numpy 多维对象的 Java 等价物

python - 在 Python 中打开 .log 扩展名文件

python - 如何根据索引数组拆分 ndarray?

python - 如何在 Python 2.7 中实现 GMRES 的 ILU 预处理器?

c# - 检测字节数组C#的编码

python - 将 Pandas Dataframe 和 numpy 数组写入通用 Excel 文件

python - 如何将函数的返回值写入 pandas 数据帧的新列

java - 在 SQLite 数据库中按数组存储数组

python - 加入整数列表

python - 如何在Python中加载Matlab的结构体(用v7.3保存)