将一个NumPy数组附加到一个NumPy数组中

我有一个numpy_array。 像[ abc ]

然后我想把它附加到另一个NumPy数组(就像我们创build一个列表清单)。 我们如何创build一个包含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]) 
 In [1]: import numpy as np In [2]: a = np.array([[1, 2, 3], [4, 5, 6]]) In [3]: b = np.array([[9, 8, 7], [6, 5, 4]]) In [4]: np.concatenate((a, b)) Out[4]: array([[1, 2, 3], [4, 5, 6], [9, 8, 7], [6, 5, 4]]) 

或这个:

 In [1]: a = np.array([1, 2, 3]) In [2]: b = np.array([4, 5, 6]) In [3]: np.vstack((a, b)) Out[3]: array([[1, 2, 3], [4, 5, 6]]) 

那么,错误消息说明了这一切:NumPy数组没有append()方法。 有一个免费的函数numpy.append()然而:

 numpy.append(M, a) 

这将创build一个新的数组,而不是在适当的位置变异M 请注意,使用numpy.append()涉及复制这两个数组。 如果您使用固定大小的NumPy数组,您将获得更好的执行代码。

Sven说这一切,只是因为在调用append时自动进行types调整时非常谨慎。

 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.append()

 import numpy B = numpy.array([3]) A = numpy.array([1, 2, 2]) B = numpy.append( B , A ) print B > [3 1 2 2] 

这不会创build两个单独的数组,但会将两个数组附加到一维数组中。

实际上,人们总是可以创build一个普通的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]]]) 

如果我理解你的问题,这是一种方法。 假设你有:

 a = [4.1, 6.21, 1.0] 

所以这里有一些代码

 def array_in_array(scalarlist): return [(x,) for x in scalarlist] 

这导致:

 In [72]: a = [4.1, 6.21, 1.0] In [73]: a Out[73]: [4.1, 6.21, 1.0] In [74]: def array_in_array(scalarlist): ....: return [(x,) for x in scalarlist] ....: In [75]: b = array_in_array(a) In [76]: b Out[76]: [(4.1,), (6.21,), (1.0,)]