首页 > 解决方案 > python:如何根据 2dim 内容将 2dim 矩阵转换为 1dim

问题描述

我有一个 2dim numpy 数组,里面的内容就像是和的组合(-1,0,1)格式(0,1,2,3,4)

现在我想将不同的组合分配到一个 1dim 矩阵中。例如,[-1,0]转移到 1[-1,1]转移到 2,最终结果将是一个 1-15 的 1-dim 矩阵。

由于我的数据量很大,效率低的for循环是不合适的。因此我想np.where实现这个功能。

假设二维数据表示为a,形状为(100,2)

import itertools
import numpy as np

dic =  set(itertools.product([-1, 0, 1], [0, 1, 2, 3, 4]))

for key,value in enumerate():
    a[np.where(a==[-1,0])[0]]=key

但是 where 的输出会匹配两次,一次判别,赋值会覆盖前面的数据。结果仍然是(100,0)封面数据。

那么我怎样才能实现我的想法呢?我的意思是快速计算量少。还是有其他方法可以解决这个问题?

谢谢

标签: pythonnumpy

解决方案


我现在已经解决了这个问题。

import itertools
dic = (set(itertools.product([-1, 0, 1], [0, 1, 2, 3, 4])))
for key,values in enumerate(dic):
    address = np.where(a==values)[0]
    a[np.delete(address,np.unique(address,return_index=True)[1])]=key
one_dim_result = a[:,0]

如果有更好的方法,请分享给我。谢谢


推荐阅读