Python 如何附加到数据数组

Python 如何附加到数据数组,python,numpy,numpy-ndarray,array-broadcasting,python-3.8,Python,Numpy,Numpy Ndarray,Array Broadcasting,Python 3.8,我是Python的Numpy库新手,我不确定我在这里做错了什么,你能帮我解决这个问题吗 所以,我像这样初始化我的数组 A = np.array([]) 然后我训练在这个数组中添加一个新的数组X,它的形状类似于(1000,32,32),如果它有任何重要性 np.insert(A, X) 这里的问题是,如果我在此之后检查ndarray A,它是空的,即使ndarray X中有元素。 你能解释一下我到底做错了什么吗 如果使用np.append,请确保回写到A,如A=np.append(A,X)—

我是Python的Numpy库新手,我不确定我在这里做错了什么,你能帮我解决这个问题吗

所以,我像这样初始化我的数组

A = np.array([])
然后我训练在这个数组中添加一个新的数组X,它的形状类似于(1000,32,32),如果它有任何重要性

 np.insert(A, X)
这里的问题是,如果我在此之后检查ndarray A,它是空的,即使ndarray X中有元素。
你能解释一下我到底做错了什么吗

如果使用
np.append
,请确保回写到
A
,如
A=np.append(A,X)
——顶级numpy函数,如
np.insert
np.append
,通常是不可变的,因此即使它返回一个值,存储它也是您的工作<如果使用append,code>np.array喜欢展平
np.ndarray
,所以老实说,我认为您只需要为a使用一个常规的
列表,并且append方法是可变的,所以不需要写回

>>> A = []
>>> X = np.ndarray((1000,32,32))
>>> A.append(X)

>>> print(A)
[array([[[1.43351171e-316, 4.32573840e-317, 4.58492919e-320, ...,
         1.14551501e-259, 6.01347002e-154, 1.39804329e-076],
        [1.39803697e-076, 1.39804328e-076, 1.39642638e-076, ...,
         1.18295070e-076, 7.06474122e-096, 6.01347002e-154],
        [1.39804328e-076, 1.39642638e-076, 1.39804065e-076, ...,
         1.05118732e-153, 6.01334510e-154, 3.24245662e-086],
...
因此,关于numpy数组,首先需要了解的是它们具有
形状
,以及许多维度。希望错误信息是清楚的

与另一个1d数组连接可以工作:

In [14]: np.concatenate([A, np.arange(3)])                                                       
Out[14]: array([0., 1., 2.])
但那只是np.arange(3)
。连接对我们没有任何帮助。好的,你可以想象这样开始一个循环。但是不要。这是没有效率的

只要维度遵守文档中指定的规则,就可以轻松地连接数组列表。只要认真对待数组的维度,这些规则是合乎逻辑的

In [15]: X = np.ones((1000,32,32))                                                               
In [16]: np.concatenate([X,X,X], axis=1).shape                                                   
Out[16]: (1000, 96, 32)

numpy.ndarray
对象是固定大小的数组
.insert
.append
返回新的数组对象。我认为您需要从
np开始。连接
。用它的例子练习。注意尺寸的数量。你的
A
形状是什么?这与
X
有什么共同之处吗?不要试图模拟
[]
和列出
追加
。为什么要将
X
附加到
A
?为什么不直接使用
X
?如果没有提供轴,则是
np.append
将输入展平。阅读文档,或者更好地阅读函数自己的代码。时间不长。
In [15]: X = np.ones((1000,32,32))                                                               
In [16]: np.concatenate([X,X,X], axis=1).shape                                                   
Out[16]: (1000, 96, 32)