如何在 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 许可协议
如何在 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 许可协议
连接一维数组有多种可能性,例如,
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 许可协议
4 回答4.4k 阅读✓ 已解决
4 回答3.8k 阅读✓ 已解决
1 回答3k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
1 回答4.5k 阅读✓ 已解决
1 回答3.8k 阅读✓ 已解决
1 回答2.8k 阅读✓ 已解决
利用:
您要连接的数组需要作为序列传递,而不是作为单独的参数。
从 NumPy 文档:
它试图将您的
b
解释为轴参数,这就是它抱怨无法将其转换为标量的原因。