什么是最好的方法:给定一个大小为 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/

10-12 18:51