我建議的ndarray
的ravel
或flatten
方法。
>>> a = numpy.arange(9).reshape(3, 3)
>>> a.ravel()
array([0, 1, 2, 3, 4, 5, 6, 7, 8])
ravel
比concatenate
和flatten
更快,因爲它沒有返回副本,除非它具有:
>>> a.ravel()[5] = 99
>>> a
array([[ 0, 1, 2],
[ 3, 4, 99],
[ 6, 7, 8]])
>>> a.flatten()[5] = 77
>>> a
array([[ 0, 1, 2],
[ 3, 4, 99],
[ 6, 7, 8]])
但是如果你需要的副本,以避免記憶上面分享所示,你」重新使用flatten
比concatenate
更好,因爲你可以從這些時間看:
>>> %timeit a.ravel()
1000000 loops, best of 3: 468 ns per loop
>>> %timeit a.flatten()
1000000 loops, best of 3: 1.42 us per loop
>>> %timeit numpy.concatenate(a)
100000 loops, best of 3: 2.26 us per loop
ñ OTE也可以實現確切結果是你的輸出說明(1列2-d陣列)與reshape
:
>>> a = numpy.arange(9).reshape(3, 3)
>>> a.reshape(1, -1)
array([[0, 1, 2, 3, 4, 5, 6, 7, 8]])
>>> %timeit a.reshape(1, -1)
1000000 loops, best of 3: 736 ns per loop
@senderle - 拉威爾是我的第一直覺太(感謝皮埃爾GM!) 。發佈作爲答案,我會愉快地upvote。 – mgilson