使用大矩阵

时间:2016-03-21 21:46:07

标签: numpy concatenation

我试图连接一个名为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 Giant Matrix 这是YXD建议的代码,但问题仍然存在......

vertexNum = VTrans.size  # Total vertex in current model
lr = np.ones(vertexNum)
VtransAppend = np.concatenate((VTrans, lr.reshape(1, -1)), axis=0)

2 个答案:

答案 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