Python - 将矩阵数据拆分为单独的列

时间:2016-11-30 22:04:22

标签: python matrix

我已从文件中读取数据并存储到矩阵中(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的单个元素。我需要帮助!

1 个答案:

答案 0 :(得分:0)

您的问题是您使用的是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.array代替。您可以随时直接将数据读入数组,但在给定的点上,如果您愿意,也可以使用np.array(frag_coords)转换现有矩阵。