什么是最好的方法:给定一个大小为 N 的离散变量数组(这里 N=4),X 是唯一元素的数量,我正在尝试创建一个大小为 (N*X) 的多维数组,其中元素是 1 或 0,具体取决于一维数组中元素的出现,例如跟随 array_1D (N=4 and X=3) 将产生大小为 3*4 的 array_ND:
array_1D = np.array([x, y, z, x])
array_ND = [[1 0 0 1]
[0 1 0 0]
[0 0 1 0]]
谢谢,
阿苏
最佳答案
试试这个:
(np.unique(a)[..., None] == a).astype(np.int)
如果你想要一个 bool 数组,你可以省略
.astype(np.int)
部分。这里我们使用了 broadcasting([..., None]
部分)来避免显式循环。分解,如评论中所建议:
>>> import numpy as np
>>> a = np.array([1, 2, 3, 1])
>>> unique_elements = np.unique(a)
>>> result = unique_elements[..., None] == a
>>> unique_elements
array([1, 2, 3])
>>> result
array([[ True, False, False, True],
[False, True, False, False],
[False, False, True, False]], dtype=bool)
关于python - 将一维离散值数组转换为 Numpy 中的 n 维连续值数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19683714/