python - 根据 Numpy 中的动态条件替换子数组中的值

标签 python arrays numpy

我有一个 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/

相关文章:

c++ - 将文件中的信息插入到结构中

python - Django:实现嵌套的、可重用的组件设计

python gevent.event.Event

java - 尝试比较 Java 数组列表中的代表销售额

JavaScript 按字母顺序排序不对所有值进行排序

python - 没有for循环的行,列分配

python - 为什么 NumPy 的随机函数在其生成的值中似乎显示出一种模式?

python - 即时创建一个动态的 2D numpy 数组

python - pandas 创建新列并将其添加到 sql 数据库

python - Caesar Cipher Python - 附加功能