连接两个一维 NumPy 数组

新手上路,请多包涵

如何在 NumPy 中连接两个一维数组?我试过 numpy.concatenate

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

但我收到一个错误:

TypeError:只有长度为 1 的数组可以转换为 Python 标量

原文由 highBandWidth 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 703
2 个回答

利用:

 np.concatenate([a, b])

您要连接的数组需要作为序列传递,而不是作为单独的参数。

NumPy 文档

numpy.concatenate((a1, a2, ...), axis=0)

将一系列数组连接在一起。

它试图将您的 b 解释为轴参数,这就是它抱怨无法将其转换为标量的原因。

原文由 Winston Ewert 发布,翻译遵循 CC BY-SA 4.0 许可协议

连接一维数组有多种可能性,例如,

 import numpy as np

np.r_[a, a]
np.stack([a, a]).reshape(-1)
np.hstack([a, a])
np.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)",
)

原文由 Nico Schlömer 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题