我有一个2dim的numpy数组,里面的内容就像是(-1,0,1)和(0,1,2,3,4)的组合格式
现在我想将不同的组合分配到一个1dim矩阵中。例如,[-1,0] transfer to 1 [-1,1] transfer to 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)。
那么我怎样才能实现我的想法呢?我的意思是计算速度很快,计算量很小。或者有其他方法来解决这个问题?
谢谢
发布于 2019-02-25 21:58:58
我现在已经解决了这个问题。
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]如果有更好的方法,请分享给我。谢谢
https://stackoverflow.com/questions/54861967
复制相似问题