将 numpy 矩阵映射到字符串矩阵

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

我有一个由 0 和 1 组成的数字矩阵。示例:

p=[[1 0 0 1 0]
   [0 0 0 0 0]
   ...
   [1 1 1 1 1]
   [0 0 0 1 1]]

此 numpy 矩阵的行表示 5 个元素突发数据的时间分隔测量。每列表示测量的通道:

channels=[A B C D E]

我需要将通道映射到 p,这样我得到:

q=[[A None None D None]
   [None None None None None]
   ...
   [A B C D E]
   [None None None D E]]

将 p 映射到 q 的最 Pythonic 方法是什么?

python function
1个回答
0
投票

您可以使用

np.tile
的组合首先展开字符串标签,然后使用
np.where
p
中选择特定索引或将结果设置为
nan

import numpy as np

p = np.array(
    [[1, 0, 0, 1, 0], [0, 0, 0, 0, 0], [1, 1, 1, 1, 1], [0, 0, 0, 1, 1]]
)
labels = ["A", "B", "C", "D", "E"]
expanded = np.tile(labels, (len(p), 1))
final = np.where(p, expanded, np.nan)
print(final)
© www.soinside.com 2019 - 2024. All rights reserved.