我有一个numpy_array。比如[a b c]。
然后我想将它与另一个NumPy数组连接起来(就像我们创建列表的列表一样)。如何创建包含NumPy数组的NumPy数组?
我试着做下面的事情,但没有任何运气
>>> M = np.array([])
>>> M
array([], dtype=float64)
>>> M.append(a,axis=0)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'numpy.ndarray' object has no attribute 'append'
>>> a
array([1, 2, 3])
Sven说这一切,只是非常谨慎,因为自动类型调整时,append被调用。
In [2]: import numpy as np
In [3]: a = np.array([1,2,3])
In [4]: b = np.array([1.,2.,3.])
In [5]: c = np.array(['a','b','c'])
In [6]: np.append(a,b)
Out[6]: array([ 1., 2., 3., 1., 2., 3.])
In [7]: a.dtype
Out[7]: dtype('int64')
In [8]: np.append(a,c)
Out[8]:
array(['1', '2', '3', 'a', 'b', 'c'],
dtype='|S1')
正如您所看到的,基于内容,dtype从int64到float32,然后到S1
我在寻找一些略有不同的东西时发现了这个链接,如何开始将数组对象追加到空numpy数组,但尝试了本页上的所有解决方案都无济于事。
然后我发现了这个问题和答案:如何向空numpy数组添加新行
要点如下:
“开始”你想要的数组的方法是:
Arr = np.empty((0,3), int)
然后你可以像这样使用concatenate来添加行:
Arr = np。Concatenate ((arr, [[x, y, z]]),轴=0)
参见https://docs.scipy.org/doc/numpy/reference/generated/numpy.concatenate.html
这是为人们使用numpy的ndarray。函数numpy.concatenate()也可以工作。
>>a = np.random.randint(0,9, size=(10,1,5,4))
>>a.shape
(10, 1, 5, 4)
>>b = np.random.randint(0,9, size=(15,1,5,4))
>>b.shape
(15, 1, 5, 4)
>>X = np.concatenate((a, b))
>>X.shape
(25, 1, 5, 4)
类似于vstack()
>>Y = np.vstack((a,b))
>>Y.shape
(25, 1, 5, 4)
实际上,我们总是可以创建一个普通的numpy数组列表,然后进行转换。
In [1]: import numpy as np
In [2]: a = np.array([[1,2],[3,4]])
In [3]: b = np.array([[1,2],[3,4]])
In [4]: l = [a]
In [5]: l.append(b)
In [6]: l = np.array(l)
In [7]: l.shape
Out[7]: (2, 2, 2)
In [8]: l
Out[8]:
array([[[1, 2],
[3, 4]],
[[1, 2],
[3, 4]]])