我创建了两个矩阵
import numpy as np
arrA = np.zeros((9000,3))
arrB = np.zerros((9000,6))
我想把这些矩阵的各个部分连接起来。但是当我尝试这样做的时候:
arrC = np.hstack((arrA, arrB[:,1]))
我得到一个错误:
ValueError: all the input arrays must have same number of dimensions
我猜这是因为np.shape(arrB[:,1])
等于(9000,)
而不是(9000,1)
,但我不知道如何解决它。
请你对这个问题发表评论。
4条答案
按热度按时间xwbd5t1u1#
可以通过传递索引列表而不是索引来保留维度:
igetnqfo2#
这在视觉上更容易看到。
假设:
如果你取arrB的一个切片,你会产生一个看起来更像一行的序列:
您需要的是一个与要添加到arrA的列形状相同的列:
然后hstack按预期工作:
另一种形式是在一个维度中指定行或列的数量,在
.reshape()
中指定另一个:这里有更多关于数组整形和堆栈的内容
uurity8g3#
我会尝试这样的方法:
suzh9iv84#
从
arrB
阵列中选择(9000,1)
有几种方法:第一个使用数组或列表索引的概念,第二个添加新轴(例如
np.newaxis
),第三个使用reshape
,这些都是基本的numpy数组操作任务。