如何按唯一键拆分数组?

我正在使用 min 函数找到数组“值”中的最小值。最低值为 1,其他均为 0。我有几个描述性列变量:药物、大小、强度、形式、时间。我想找到每个唯一键的最小值,而不是整个数组“值”中的最小值。


我已经尝试为每个列变量运行循环。


def min_mask(arr):

    m = np.min(arr)

    return np.vectorize(lambda x: x == m)(arr).astype(int)


if __name__ == '__main__':

    my_arr = np.array(meltDF["value"])

    print(min_mask(my_arr))


杨__羊羊
浏览 154回答 2
2回答

人到中年有点甜

您可以将元素与其列式分钟进行比较,然后将大小写为 uint8 以节省一些空间:>>> import numpy as np                                                                                                                                                                                                                                     >>> np.random.seed(444)                                                                                                                                                                                                                                 >>> arr = np.random.rand(10, 4)                                                                                                                                                                                                                         >>> (arr == arr.min(axis=0)).astype(np.uint8)                                                                                                                                                                                                           array([[0, 0, 0, 0],       [1, 0, 0, 0],       [0, 0, 0, 0],       [0, 0, 0, 0],       [0, 0, 0, 0],       [0, 0, 0, 0],       [0, 0, 0, 0],       [0, 0, 0, 1],       [0, 1, 0, 0],       [0, 0, 1, 0]], dtype=uint8)由于 NumPy 的广播,比较arr == arr.min(axis=0)会产生与 的形状相同的结果arr,即使arr.min(axis=0)会有形状(4,)。请注意,如果列有重复的最小值,这可能会在单个列中生成多个“1”。

暮色呼如

这里有很多选项,例如:1) 预先初始化掩码并使用argmin填入合适的地方:arr = np.random.rand(10, 4)indices = np.argmin(arr, axis=0)mask = np.zeros_like(arr, dtype=np.int)mask[indices, range(len(indices))] = 12) Usingapply_along_axis可能是你喜欢的风格:def is_minimum(v):    return v == np.min(v)mask = np.apply_along_axis(is_minimum, axis=0, arr=arr).astype(np.int)这些解决方案假设每一列对应一个唯一的键。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python