[python] 連接兩個一維NumPy數組



1 Answers

concatenate的第一個參數本身應該是一系列要連接的數組

numpy.concatenate((a,b)) # Note the extra parentheses.
Question

我在NumPy有兩個簡單的一維數組。 我應該能夠使用numpy.concatenate連接它們。 但是我得到下面的代碼的這個錯誤:

TypeError:只有長度為1的數組可以轉換為Python標量

import numpy
a = numpy.array([1, 2, 3])
b = numpy.array([5, 6])
numpy.concatenate(a, b)

為什麼?




連接1D陣列有幾種可能性,例如,

numpy.r_[a, a],
numpy.stack([a, a]).reshape(-1),
numpy.hstack([a, a]),
numpy.concatenate([a, a])

對於大型陣列,所有這些選項都同樣快速; 對於小型企業而言, concatenate有一點優勢:

這個情節是用perfplot創建的:

import numpy
import perfplot

perfplot.show(
    setup=lambda n: numpy.random.rand(n),
    kernels=[
        lambda a: numpy.r_[a, a],
        lambda a: numpy.stack([a, a]).reshape(-1),
        lambda a: numpy.hstack([a, a]),
        lambda a: numpy.concatenate([a, a])
        ],
    labels=['r_', 'stack+reshape', 'hstack', 'concatenate'],
    n_range=[2**k for k in range(19)],
    xlabel='len(a)',
    logx=True,
    logy=True,
    )



Related