我有一个 Python Numpy 数组,它是一个二维数组,其中第二个维度是 3 个整数元素的子数组。例如:
[ [2, 3, 4], [9, 8, 7], ... [15, 14, 16] ]
对于每个子数组,我想用 1 替换最低的数字,用 0 替换所有其他数字。因此上面示例的所需输出将是:
[ [1, 0, 0], [0, 0, 1], ... [0, 1, 0] ]
这是一个很大的数组,所以我想利用 Numpy 的性能。我知道如何使用条件对数组元素进行操作,但是当条件是动态的时,我该如何执行此操作?在这种情况下,条件需要类似于:
newarray = (a == min(a)).astype(int)
但是我如何在每个子数组中执行此操作?
最佳答案
您可以指定axis
参数来计算分钟的二维数组(如果保留结果的维度),那么当您执行a = = a.minbyrow
,您将在每个子数组的最小位置处得到 true:
(a == a.min(1, keepdims=True)).astype(int)
#array([[1, 0, 0],
# [0, 0, 1],
# [0, 1, 0]])
关于python - 根据 Numpy 中的动态条件替换子数组中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43076540/