我有一段代碼,我正在從MATLAB轉換爲python。它還沒有以非常pythonic的方式寫,但我會在稍後的階段調整它。python相當於MATLAB的代碼vec2mat
MATLAB腳本具有通信系統工具箱中的功能vec2mat
。 (請參見http://www.mathworks.co.uk/help/comm/ref/vec2mat.html)通過指定要轉換的向量以及希望擁有的列數,可將矢量更改爲矩陣。 mat = vec2mat(vec,matcol)
。
我通常只會使用numpy.reshape
。但是,如果矢量中沒有足夠的值來完全填充最後一行,vec2mat將向最後一行添加零。
我需要的填充將根據我輸入的csv文件而有所不同。
atbmat = vec2mat(atbvec,nb);
在該示例情況下nb
是5和atbvec
長度爲4806因此四個零被添加到最底行。
我將如何去添加額外的零在Python中創建一個二維數組?我會有長度爲4806的一維數組atbvec
和nb
等於五(我想要nb列)。
感謝您的任何建議,我希望這是有道理的。
編輯
dim=len(atbvec)/int(nb)
atbvec=np.array(atbvec)
atbvec=np.copy(atbvec)
atb_mat=atbvec.resize((dim,nb)
這是返回None
。
非常感謝這麼快的回覆。這聽起來像應該起作用。 (** dim = len(atbvec)/ int(nb)) atb_mat =返回atb_mat **) –
除了「resize」只是將零添加到連續的內存塊。考慮'a = np.array([[1],[2],[3]])。copy(); a.resize(3,2)'。 –
@AshleighClayton這是因爲它調整''in-place'的大小,所以你的原始數組現在有一個擴展的內存塊,正如@HenryGomersall所提到的 –