如何从文件中提取两个单独的矩阵?

问题描述 投票:1回答:1

所以我有一个看起来像这样的文件:

# 3  # Number of network ROIs
# 2  # Number of netcc matrices
# WITH_ROI_LABELS
    001             002              003
      1               2                3
# CC
  1.0000          0.9800          0.9895
  0.9800          1.0000          0.9817
  0.9895          0.9817          1.0000
# FZ
  4.0000          2.2965          2.6240
  2.2965          4.0000          2.3426
  2.6240          2.3426          4.0000
  • 我想提取标有“CC”的3x3矩阵
  • 我想提取标有“FZ”的3x3矩阵

所以我做了以下事情:

file=/users/3dfile1
A= numpy.genfromtxt(file)
m= A[:,:]
m

所以我得到的输出看起来像这样:

array([[ 1.    ,  2.    ,  3.    ],
       [ 1.    ,  2.    ,  3.    ],
       [ 1.    ,  0.98  ,  0.9895],
       [ 0.98  ,  1.    ,  0.9817],
       [ 0.9895,  0.9817,  1.    ],
       [ 4.    ,  2.2965,  2.624 ],
       [ 2.2965,  4.    ,  2.3426],
       [ 2.624 ,  2.3426,  4.    ]])

但是,我的问题是...如果我有多个文件。矩阵大小不一致的地方。这意味着在某些文件中矩阵将是3x3,一些文件是8x8,1x1等。在这种情况下,我如何编写以下内容:

  • 区分矩阵CC和FZ
  • 提取矩阵(可以某种方式检测矩阵的大小,并给我我正在寻找的确切矩阵)
python numpy matrix
1个回答
1
投票

尝试

import numpy as np
x = np.array([[ 1.    ,  2.    ,  3.    ],
       [ 1.    ,  2.    ,  3.    ],
       [ 1.    ,  0.98  ,  0.9895],
       [ 0.98  ,  1.    ,  0.9817],
       [ 0.9895,  0.9817,  1.    ],
       [ 4.    ,  2.2965,  2.624 ],
       [ 2.2965,  4.    ,  2.3426],
       [ 2.624 ,  2.3426,  4.    ]])

x1 = x[2:,:]

x2 = x1.reshape(2,3,3)

CC ,FZ = x2

结果:

In [23]: CC
Out[23]: 
array([[ 1.    ,  0.98  ,  0.9895],
       [ 0.98  ,  1.    ,  0.9817],
       [ 0.9895,  0.9817,  1.    ]])

In [24]: FZ
Out[24]: 
array([[ 4.    ,  2.2965,  2.624 ],
       [ 2.2965,  4.    ,  2.3426],
       [ 2.624 ,  2.3426,  4.    ]])
© www.soinside.com 2019 - 2024. All rights reserved.