我有一个非有限元素的数字数组。例如:
myMax = np.finfo(float).max
myArray = np.array((0,1,myMax*2))我想用myMax代替非有限元。
下列指示不起作用:
myArray[not np.isfinite(myArray)]=myMax因此,我使用以下命令:
myArray=[i if np.isfinite(i) else myMax for i in myArray]这是正确的方法,还是在性能(执行时间和/或内存使用)方面有更好的解决方案?
谢谢你的回答。
发布于 2021-06-08 10:35:24
您应该按位使用NOT (~):
myArray[~np.isfinite(myArray)] = myMax示例:
>>> import numpy as np
>>> myMax = np.finfo(float).max
>>> myArray = np.array((0,1,myMax*2))
<stdin>:1: RuntimeWarning: overflow encountered in double_scalars
>>> np.isfinite(myArray)
array([ True, True, False])
>>> not np.isfinite(myArray)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
>>> ~np.isfinite(myArray)
array([False, False, True])https://stackoverflow.com/questions/67885492
复制相似问题