我有一个浮点数数组,我希望使用一个取决于重新计算的列的公式重新计算新值。在
我最初尝试循环遍历列,屏蔽除了要重新计算的列之外的数组,并使用numpy.putmask公司但这并没有保留顺序,因为它试图在每个元素中放置一个值,如果不这样做,则尝试在下一个元素上使用下一个计算值,a la:
>>> import numpy as np
>>> x = [[ 1., 2.],
[ 3., 4.],
[ 5., 6.],
[ 7., 8.],
[ 9., 10.]]
>>> mask = [[ True, False],
[ True, False],
[ True, False],
[ True, False],
[ True, False]]
>>> y = [ 21., 22., 23., 24., 25.]
>>> np.putmask(x,mask,y)
>>> print x
[[ 21. 2.]
[ 23. 4.]
[ 25. 6.]
[ 22. 8.]
[ 24. 10.]]
我需要一个解决方案,它将用相同的值重试,直到找到一个真正的值,这样x看起来像:
^{pr2}$欢迎任何解决方案或其他方法。谢谢。在
putmask(x,mask,y)
为每个n
设置x.flat[n] = y[n]
,其中{由于
mask.flat
在True
和False
之间交替出现,所以您最终将x.flat
中的每个其他值设置为y
中的其他值。在由于
y
与x
的大小不同,y
中的值是重复的。这就是调用后在x
中看到的(不希望的)交替值的原因putmask(x,mask,y)
。在如果相反,您希望在
^{pr2}$x
为真的情况下为x
分配新值, 那么您只需要使用numpy indexing赋值:例如
相关问题 更多 >
编程相关推荐