我有两个数据集,data1和data2。我获取这些数据集并执行此操作:
Out=np.arctan(np.sqrt(data1/data2))
有三个元素in Out的值是nan,而实际上它们不应该是。我将这些nan元素的索引保存在一个名为nanind
的列表中。所以:
现在我真的很困惑。在
np.arctan(np.sqrt(data1[nanind[0]]/data2[nanind[0]))
np.arctan(np.sqrt(data1[nanind[1]]/data2[nanind[1]))
np.arctan(np.sqrt(data1[nanind[2]]/data2[nanind[2]))
不要回南。它们按预期返回正浮点数。有人能解释一下吗,我真的需要摆脱nan元素吗?在
另外,我也试过一次做一个元素,形式是:
for i in range(data1.shape[0]):
for j in range(data1.shape[1]):
Out[i,j]=np.arctan(np.sqrt(data1[i,j]/data2[i,j]))
并且Out
仍然具有与nan相同的三个元素。在
np.sqrt()
为负输入返回NaN
。在打错了类型,比如np.sqrt公司('hello'),它引发一个类型错误
如果数学上允许你的应用,你可以np.sqrt公司()通过传入复数将复数传递给下一步。这可以很简单地将
^{pr2}$0j
添加到一个float中,如下所示:否则,您应该测试np.sqrt公司使用
np.isnan
,可能与any
组合,以便在数组上进行测试,并打印适当的警告或引发异常。在这不是为永久性代码编写异常的最佳方法,但对于调试是有效的。要了解有关异常处理的详细信息,请参见Python Docs, Chapter 8: Errors and Exceptions
相关问题 更多 >
编程相关推荐