python - 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)
封面数据。
那么我怎样才能实现我的想法呢?我的意思是快速计算量少。还是有其他方法可以解决这个问题?
谢谢
解决方案
我现在已经解决了这个问题。
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]
如果有更好的方法,请分享给我。谢谢
推荐阅读
- webfonts - 为什么浏览器不能正确渲染我的字体
- python - 在 WSGI 中使用 Requests 库
- javascript - 如何在新页面中保留展开的下拉菜单?
- java - 在 Java 中使用匿名类进行模拟
- jenkins - 如何获得 Jenkins 目前的工作,以便更新它的编号?
- javascript - 在 React Native 中根据命名约定导入 typescript 文件
- javascript - 多个事件监听器
- javascript - AWS S3 通过预签名 URL 上传返回 400 错误请求
- vb.net - 为什么 vb.nets '=' 运算符以这种方式评估不同的类型?
- tensorflow - 如何协调 TFP 与 PyMC3 MCMC 结果?