【问题标题】:Python - split matrix data into separate columnsPython - 将矩阵数据拆分为单独的列
【发布时间】:2016-11-30 22:04:21
【问题描述】:

我已从文件中读取数据并存储到矩阵(frag_coords)中:

frag_coords =
[[  916.0907976    -91.01391344   120.83596334]
 [  916.01117655   -88.73389753   146.912555  ]
 [  924.22832597   -90.51682575   120.81734705]

...
 [  972.55384732   708.71316138    52.24644577]
 [  972.49089559   710.51583744    72.86369124]]

type(frag_coords) = 
class 'numpy.matrixlib.defmatrix.matrix'

按指定列重新排序矩阵时没有任何问题。例如,下面的代码就可以正常工作:

order = np.argsort(frag_coords[:,2], axis=0)

我的问题是:

len(frag_coords[0]) = 1

我需要单独访问第一行的各个数字,我尝试将其拆分,将其转换为列表,并且所有内容似乎都不是将 3 个数字作为列返回,而是作为 len=1 的单个元素返回。我需要帮助!

【问题讨论】:

    标签: python matrix


    【解决方案1】:

    您的问题是您使用的是matrix 而不是ndarray。你确定要那个吗?

    对于矩阵,单独索引第一行会导致另一个矩阵,即行矩阵。检查frag_coords[0].shape:它将是(1,3)。对于ndarray,它将是(3,)

    如果只需要索引第一行,使用两个索引:

    frag_coords[0,j]
    

    或者,如果您临时存储该行,只需将其作为行矩阵进行索引:

    tmpvar = frag_coords[0]  # shape (1,3) 
    print(tmpvar[0,2])       # for column 2 of row 0
    

    如果您不需要太多的矩阵运算,我建议您改用np.arrays。您始终可以直接将数据读入数组,但在给定的点上,您也可以根据需要使用np.array(frag_coords) 转换现有矩阵。

    【讨论】:

    • 谢谢!!我以为我需要一个矩阵来执行我的计算(没什么花哨的,主要是坐标转换和旋转),但我可以而且肯定会使用数组来代替!
    • @IsisDorus 很高兴我能提供帮助:) 对于 python 3.5 及更高版本,具有足够新的 numpy 版本,可以使用 @ 运算符进行矩阵乘法,它也适用于数组。否则需要使用numpy.dot 来做同样的事情。无论如何,数组通常更方便:)
    猜你喜欢
    • 1970-01-01
    • 2015-03-16
    • 1970-01-01
    • 2020-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-28
    相关资源
    最近更新 更多