首页 > 解决方案 > 如何使用 numpy 进行连接?

问题描述

我有两个数组,第一个是(n 行,6 列),比如说X

[[ 0.2    7.7   -6.2   0.4  9.6  -2.4]
 [ 0.1    7.2   -6.3   0.4  9.5  -2.1]
 [ 0.02   7.9   -5.8   0.2  9.1  -3.5]
 ...
 [-3.6    7.9   -5.3  -0.7  9.4  -0.4]
 [-1.2    8.8   -4.1  -0.4  9.8   0.9]
 [-1.2    9.6    1.2  -1.0  9.8   1.6]]

第二个是(n 个元素),比如说Y

[100. 101. 102. 103. 100. 100. 100. 100. 100. 100. 100. 100. 100. 100.
 100. 100. 100. 100. 100. 100. 100. 101. 101. 101. 101. 101. 101. 101.
 ...
 105. 105. 105. 105. 105. 105. 105. 105. 105. 105. 105. 105. 105. 105.
 105. 107. 108. 109.]

我想要第三个 c 数组(n 行,7 列),比如Z

[[ 0.2    7.7   -6.2   0.4  9.6  -2.4  100.]
 [ 0.1    7.2   -6.3   0.4  9.5  -2.1  101.]
 [ 0.02   7.9   -5.8   0.2  9.1  -3.5  102.]
 ...
 [-3.6    7.9   -5.3  -0.7  9.4  -0.4  107.]
 [-1.2    8.8   -4.1  -0.4  9.8   0.9  108.]
 [-1.2    9.6    1.2  -1.0  9.8   1.6  109.]]

我有这个代码来做到这一点:

import numpy as np

Y.resize((2, 1))
Z = np.concatenate((X, Y), axis=1)

但我收到了这个错误信息:

Y.resize((2, 1))
ValueError: resize only works on single-segment arrays

谁能帮我解决这个问题?

标签: pythonarraysnumpyconcatenation

解决方案


最简单的方法是:

Z = np.hstack((X,Y[:,None]))

Y[:,None]添加一个维度Y并将hstack它们水平堆叠。

例子:

X=np.ones((3,6))
#[[1. 1. 1. 1. 1. 1.]
# [1. 1. 1. 1. 1. 1.]
# [1. 1. 1. 1. 1. 1.]]
Y = np.zeros(3)
#[0. 0. 0.]

Z:

[[1. 1. 1. 1. 1. 1. 0.]
 [1. 1. 1. 1. 1. 1. 0.]
 [1. 1. 1. 1. 1. 1. 0.]]

推荐阅读