我试图连接一个名为VTrans的3乘n立方坐标矩阵和1乘n的所有一个名为lr的值向量,以将坐标矩阵扩展为4乘n均匀矩阵。在我的例子中,n是顶点数141669,这是非常大的。
以下代码在非常小的数据集中工作时无效。
lr = np.ones(vertexNum).reshape((1, vertexNum))
VtransAppend = np.concatenate((VTrans, lr), axis=0)
UPDATE2:
刚发现问题,我的vertexNum错了!它实际上是47223而不是141669. 141669是它的大小!所有解决方案都有效,我将接受第一个。谢谢大家!
错误显示“除串联轴之外的所有输入数组维度必须完全匹配”
我通过打印尺寸进一步验证lr和VtransAppend具有相同的长度。
print lr.size
print VTrans.size
任何人曾经有过同样奇怪的问题并知道如何解决它?
以下是更新:
附加了我的VTrans矩阵,其中vertextNum是141669 这是YXD建议的代码,但问题仍然存在......
vertexNum = VTrans.size # Total vertex in current model
lr = np.ones(vertexNum)
VtransAppend = np.concatenate((VTrans, lr.reshape(1, -1)), axis=0)
答案 0 :(得分:1)
你必须摆弄lr
以获得与vTrans
相同数量的维度
>>> n = 4
>>> vTrans = np.random.random_sample((3, n))
>>> lr = np.ones(n)
>>> np.concatenate((vTrans, lr.reshape(1, -1)), axis=0)
array([[ 0.65769116, 0.41008341, 0.66046706, 0.86501781],
[ 0.51584699, 0.60601466, 0.93800371, 0.25077702],
[ 0.16696658, 0.41839794, 0.0938594 , 0.48484606],
[ 1. , 1. , 1. , 1. ]])
>>>
即。重塑后,非连接维度与vTrans
>>> lr.shape
(4,)
>>> lr.reshape(1, -1).shape
(1, 4)
>>>
答案 1 :(得分:0)
尝试使用vstack
代替concatenate
:
a = np.random.random((3,5))
b = np.random.random(5)
np.vstack((a, b))
可替换地:
np.concatenate((a, b[None,:]))
None
将轴添加到1D数组b
。