python - 跨不同维度移动唯一值
问题描述
我有一个要求,我想通过在 3 个维度上分离 3 个唯一值来将 2D 矩阵转换为 3D。例如:转换
A = [1 2 3 3
1 1 2 1
3 2 2 3
1 3 3 2]
到
A = [[1 0 0 0
1 1 0 1
0 0 0 0
1 0 0 0]
[0 1 0 0
0 0 1 0
0 1 1 0
0 0 0 1]
[0 0 1 1
0 0 0 0
1 0 0 1
0 1 1 0]]
如果矩阵表示的语法不正确,请原谅我。
解决方案
您可以使用np.unique
并利用布尔数组并将它们转换为 int 使用numpy.ndarray.astype
.
import numpy as np
a=np.array([[1, 2, 3, 3], [1, 1, 2, 1], [3, 2, 2, 3], [1, 3, 3, 2]])
[a==i.astype(int) for i in np.unique(a)]
输出:
[array([[1, 0, 0, 0],
[1, 1, 0, 1],
[0, 0, 0, 0],
[1, 0, 0, 0]]),
array([[0, 1, 0, 0],
[0, 0, 1, 0],
[0, 1, 1, 0],
[0, 0, 0, 1]]),
array([[0, 0, 1, 1],
[0, 0, 0, 0],
[1, 0, 0, 1],
[0, 1, 1, 0]])]
推荐阅读
- angular - 使用 SCSS 时如何防止 Angular@12 在 -tag 上呈现“onload”属性
- integration - Klaviyo 到 Gordias 的整合可能性&
- python-3.x - 如何使用 Python 编码 UTF-16-BE 保存文件?
- clojure - 如何为 Clojure 安装 NightCode IDE
- python - python中具有3个数组(x,y和值)的2D直方图
- python-3.x - 找不到满足 pytest-config 要求的版本(不可用)(来自版本:0.0.8、0.0.9、0.0.10、0.0.11)
- soot - Soot:Soot可以分析.war包吗?
- javascript - 有人可以根据本文向我解释与解构相关的性能优势吗
- python - 如何修复odoo 12中错误的模型描述
- docker - 我的图像内层的 Docker 图像 SHA