【发布时间】:2016-02-21 01:20:33
【问题描述】:
假设我们有这个数组,我想用数字 50 替换最小值
import numpy as np
numbers = np.arange(20)
numbers[numbers.min()] = 50
所以输出是[50,1,2,3,....20]
但现在我遇到了问题:
numbers = np.arange(20).reshape(5,4)
numbers[numbers.min(axis=1)]=50
获取[[50,1,2,3],[50,5,6,7],....]
但是我得到了这个错误:
IndexError: 索引 8 超出轴 0 的范围,大小为 5 ....
有什么建议吗?
【问题讨论】:
-
numbers.min()返回最小值而不是数组的索引。在您的第一个示例中,它之所以有效,是因为数组的索引和值是相同的。你需要找到最小数字的索引。 -
numbers.min()返回 numpy 数组中的最小值,而不是 index。仅当您有一个具有严格连续递增值的数组时,它才有效。最好使用返回最小值位置的函数,然后用它来替换新值。