2024-04-18 07:00:29 发布
网友
我有一个类似w=[0.854,0,0.66,0.245,0,0,0,0]的数组,并希望对每个值应用100/sqrt(x)。因为我不能除以0,所以我用了这个技巧:
w=[0.854,0,0.66,0.245,0,0,0,0]
w=np.where(w==0,0,100/np.sqrt(w))
因为我没有除以0,所以我不应该有任何警告。 那为什么numpy一直在筹集资金呢?你知道吗
您始终可以使用逻辑索引来计算它:
w = [0.854,0,0.66,0.245,0,0,0,0] w = np.array(w) w[w!=0] = 100 / np.sqrt(w[w!=0])
这样你就可以确保你不会被零除,也不会有任何警告或意外的行为。你知道吗
100/np.sqrt(w)仍然使用带零的w,因为函数参数是在执行函数之前计算的。零的平方根是零,所以你最后用一个包含零的数组除以100,这个数组又试图用这个数组的每个元素除以100,然后在某个点上用一个等于零的元素除以100。你知道吗
100/np.sqrt(w)
w
由于它利用了矢量化的优点,它将对w的每个元素执行100/np.sqrt(w),因此将发生被0除的情况,但是您不会获取与这些条目相关联的结果。所以基本上你的技巧仍然是被0除,但是不使用被0除的条目。你知道吗
您始终可以使用逻辑索引来计算它:
这样你就可以确保你不会被零除,也不会有任何警告或意外的行为。你知道吗
100/np.sqrt(w)
仍然使用带零的w
,因为函数参数是在执行函数之前计算的。零的平方根是零,所以你最后用一个包含零的数组除以100,这个数组又试图用这个数组的每个元素除以100,然后在某个点上用一个等于零的元素除以100。你知道吗由于它利用了矢量化的优点,它将对
w
的每个元素执行100/np.sqrt(w)
,因此将发生被0除的情况,但是您不会获取与这些条目相关联的结果。所以基本上你的技巧仍然是被0除,但是不使用被0除的条目。你知道吗相关问题 更多 >
编程相关推荐