将一个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,)]