我有一个包含多个值的numpy数组"target_tokens"。我尝试接收一个与之形状相同的numpy数组,在目标令牌数组中,当我有一个特定值(即九或二)时,在该位置放置1.0。 下面是针对九的代码示例:
为什么会这样,我如何在没有大循环的情况下仍然可以实现我的目标(实际上,该组比两个值更大)。
谢谢
i_factor = (target_tokens == 9).astype(np.float32)
结果:
[[ 0. 0. 0. 0.]
[ 0. 0. 0. 0.]
[ 0. 0. 1. 0.]
[ 0. 0. 0. 0.]
[ 0. 0. 0. 0.]...
这个不起作用:
group = [2, 9]
i_factor = (target_tokens in group).astype(np.float32)
结果是:
i_factor = (target_tokens in group).astype(np.float32)
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
为什么会这样,我如何在没有大循环的情况下仍然可以实现我的目标(实际上,该组比两个值更大)。
谢谢
np.asarray(target_tokens)[:,None] == range(9)
? - Divakar