我有一个形状为 N,M
的二进制矩阵,我想要一种有效的方法将其转换为染色体,也就是说,给定一行我需要一个函数返回非零元素的索引,例如给定行 [1,1,0,0,0,0,0,0,1]
函数应返回 [0 ,1,8]
,例如,这可以使用 np.flatnonzero
来完成。例如,我需要将此转换应用于所有行并返回表示二进制矩阵的展平向量
P = np.array([[1,1,0,0,0,0,0,0,1], [0,0,1,1,1,1,0,0, 0], [0,0,0,0,0,0,1,1,0]])
应转换为[018234567]
最佳答案
您可以使用非平面版本 np.nonzero
。使用矩阵,这将为您提供一个元组,其中分别包含行和列的数组,您需要从中获取列:
P = np.array([[1,1,0,0,0,0,0,0,1], [0,0,1,1,1,1,0,0,0], [0,0,0,0,0,0,1,1,0]])
rows, col = np.nonzero(P)
print(col)
# [0 1 8 2 3 4 5 6 7]
关于python - Numpy 二进制矩阵到染色体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68531609/