gpt4 book ai didi

python - where in numpy 的负面预期效果是什么?

转载 作者:行者123 更新时间:2023-11-28 22:13:06 24 4
gpt4 key购买 nike

据我了解 numpy 的 negative 函数的文档,它的 where 选项允许您保留一些数组组件未取反:

>>> import numpy as np
>>> np.negative(np.array([[1.,2.],[3.,4.],[5.,6.]]), where=[True, False])
array([[-1., 2.],
[-3., 4.],
[-5., 6.]])

但是,当我尝试时,这些值似乎(几乎)被归零了:

>>> import numpy as np
>>> np.negative(np.array([[1.,2.],[3.,4.],[5.,6.]]), where=[True, False])
array([[-1.00000000e+000, 6.92885436e-310],
[-3.00000000e+000, 6.92885377e-310],
[-5.00000000e+000, 6.92885375e-310]])

那么我应该如何查看where选项呢?

最佳答案

文档这样描述where:

Values of True indicate to calculate the ufunc at that position, values of False indicate to leave the value in the output alone.

让我们尝试使用 out 参数的示例:

x = np.ones(3)
np.negative(np.array([4.,5.,6.]), where=np.array([False,True,False]), out=x)

这会将 x 设置为 [1., -5., 1.],并返回相同的值。

一旦您意识到“单独保留输出中的值”字面意思是输出值“无关紧要”,而不是“与输入相同”(后一种解释是我如何也是第一次阅读)。

当您指定 where 而不是 out 时,问题就出现了。显然,“ufunc machinery ”(在 the implementation of np.negative() 中不可见)创建了一个 输出数组,这意味着值是不确定的。因此 where 为 False 的位置将具有未初始化的值,可以是任何值。

这对我来说似乎很不对,但是有一个 NumPy issue去年提交过,然后关闭。它似乎不太可能改变,因此您必须解决它(例如,通过使用 zeros 自己创建输出数组)。

关于python - where in numpy 的负面预期效果是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54250461/

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