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

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

这个麻木矩阵的行表示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的最Python方法是什么?

推荐答案

您可以使用np.tile的组合首先扩展字符串标签,然后使用np.wherep中 Select 特定索引或将结果设置为None.

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, None)

print(final)

正如@Mechanic Pig指出的那样,广播本身就可以解决这个问题,所以你甚至不需要np.tile个.

Python相关问答推荐

为什么Pydantic在我申报邮箱时说邮箱丢失

查找3D数组中沿一个轴的相同值序列的长度(与行程长度编码相关)

手动为pandas中的列上色

按日期和组增量计算总价值

如何使用函数正确索引收件箱?

"如果发生特定错误,返回值

从今天起的future 12个月内使用Python迭代

如何使用stride_tricks.as_strided逆转NumPy数组

三个给定的坐标可以是矩形的点吗

acme错误-Veritas错误:模块收件箱没有属性linear_util'

时间序列分解

删除任何仅包含字符(或不包含其他数字值的邮政编码)的观察

. str.替换pandas.series的方法未按预期工作

关于Python异步编程的问题和使用await/await def关键字

在vscode上使用Python虚拟环境时((env))

如何使用Pandas DataFrame按日期和项目汇总计数作为列标题

Python列表不会在条件while循环中正确随机化'

让函数调用方程

在pandas/python中计数嵌套类别

具有相同图例 colored颜色 和标签的堆叠子图