【问题标题】:Converting a 3D matrix into vertically cascaded 1D arrays将 3D 矩阵转换为垂直级联的 1D 数组
【发布时间】:2015-12-08 13:23:19
【问题描述】:

以下代码中的 for 循环有什么快捷方式吗?

import numpy as np

ff = np.zeros((3,3,4))
gg = np.zeros((36,1))

ff[:,:,0] = 1
ff[:,:,1] = 2
ff[:,:,2] = 3
ff[:,:,3] = 4


for ii in xrange(4):
    gg[ii*9:(ii+1)*9,0] = ff[:,:,ii].reshape((9,))

【问题讨论】:

    标签: python numpy matrix vectorization reshape


    【解决方案1】:

    您可以使用transposeswapaxes 和一些reshaping -

    ff.transpose([2,1,0]).ravel()[:,None]
    
    ff.swapaxes(0,2).ravel()[:,None]
    

    您可以将ravel 替换为reshape -

    ff.transpose([2,1,0]).reshape(-1,1)
    
    ff.swapaxes(0,2).reshape(-1,1)
    

    【讨论】:

    • 智能回答。谢谢!
    猜你喜欢
    • 2015-12-08
    • 1970-01-01
    • 1970-01-01
    • 2016-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-24
    • 1970-01-01
    相关资源
    最近更新 更多