【问题标题】:Matching values from a matrix to an array将矩阵中的值匹配到数组
【发布时间】:2019-04-26 22:34:12
【问题描述】:

我有一个大小为 211 x 129 的二进制值矩阵,例如:

matrix =

(

   0   0   1   1   0   0   0   0   0 ...   0   1   1   0   0   0   0   
   0   0   1   1   0   1   1   0   0 ...   0   0   0   0   0   0   0   
   0   0   0   0   0   0   0   0   0 ...   0   0   0   0   0   0   0   
   0   0   0   0   0   0   0   0   1 ...   0   0   0   0   0   0   0 
   ...
   ...
   ...  

)

我有一个包含 211 个数字的数组:

   array =

 [

   [158 147  35 162 143 139   8 129  43  97 163 151  24 103 161  54  38  10
    100 193 192 191 188 187 186 185 184 182 181 179 178 177 176 175 174 171
    170 169 167 166 155 154 152 149 148 146 145 142 141 136 134 132 130 
   ....

 ]

我想将数字与数组中的相应行匹配并创建一个新矩阵。非常重要的是数组中的数字,例如158 正好是矩阵的第 158 行。

输出如下所示:

   new_matrix:

 (

   158 0   0   0   1   0   0   0   0   0 ...   0   0   1   0   0   0   0 //Values of row 158 from the matrix     
   147 0   0   1   0   0   1   1   0   0 ...   0   0   0   0   0   0   0 //Values of row 147 from the matrix     
   35  0   0   1   1   0   0   0   0   0 ...   0   0   0   0   0   0   0    //Values of row 35 from the matrix   
   162 0   0   0   0   0   0   0   0   1 ...   0   0   0   0   0   1   1 

   143 
   ...
   ...

 )

有什么指导吗?

【问题讨论】:

  • 你最后做了什么?

标签: python arrays matrix


【解决方案1】:

制作一个矩阵:

matrix = [[] for _ in range(211)]

现在,您可以填充它了:

for row in enumerate(array):
    matrix[row[0]] = old_matrix[row[1]]

【讨论】:

    【解决方案2】:

    怎么办

    matrix[array - 1, :]
    

    其中array - 1 代表indexing is 0-based in Python


    一个例子,模仿你的输入。
    >>> matrix = np.random.rand(5, 4)
    >>> matrix
    array([[0.15894248, 0.21096647, 0.5282654 , 0.69521   ],
           [0.86969885, 0.36367184, 0.3805844 , 0.3208523 ],
           [0.86888592, 0.40990308, 0.73697685, 0.5205354 ],
           [0.56091075, 0.92830105, 0.63612971, 0.54486469],
           [0.33106509, 0.12822892, 0.30061825, 0.03357865]])
    >>> array = np.random.randint(1, 5, 3)
    >>> array
    array([1, 1, 4])
    

    终于

    >>> matrix[array - 1, :]
    array([[0.15894248, 0.21096647, 0.5282654 , 0.69521   ],
           [0.15894248, 0.21096647, 0.5282654 , 0.69521   ],
           [0.56091075, 0.92830105, 0.63612971, 0.54486469]])
    

    【讨论】:

      猜你喜欢
      • 2018-01-31
      • 1970-01-01
      • 2016-07-24
      • 1970-01-01
      • 1970-01-01
      • 2019-12-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多