gpt4 book ai didi

python - 将最小值替换为 numpy 数组中的另一个

转载 作者:太空宇宙 更新时间:2023-11-03 13:39:39 25 4
gpt4 key购买 nike

假设我们有这个数组,我想用数字 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: index 8 is out of bounds for axis 0 with size 5 ....

有什么帮助的想法吗?

最佳答案

您需要使用 numpy.argmin 而不是 numpy.min:

In [89]: numbers = np.arange(20).reshape(5,4)

In [90]: numbers[np.arange(len(numbers)), numbers.argmin(axis=1)] = 50
In [91]: numbers
Out[91]:
array([[50, 1, 2, 3],
[50, 5, 6, 7],
[50, 9, 10, 11],
[50, 13, 14, 15],
[50, 17, 18, 19]])

In [92]: numbers = np.arange(20).reshape(5,4)

In [93]: numbers[1,3] = -5 # Let's make sure that mins are not on same column

In [94]: numbers[np.arange(len(numbers)), numbers.argmin(axis=1)] = 50

In [95]: numbers
Out[95]:
array([[50, 1, 2, 3],
[ 4, 5, 6, 50],
[50, 9, 10, 11],
[50, 13, 14, 15],
[50, 17, 18, 19]])

(我认为我原来的答案不正确,我混淆了行和列,这是正确的)

关于python - 将最小值替换为 numpy 数组中的另一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33794750/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com