修改numpy数组以返回nan越界吗?

blu*_*ote 5 python numpy

无论如何,要创建一个numpy数组,np.nan当索引超出范围时返回该数组?例如

x = np.array([1,2,3])
x[1] # 2
x[-2] # np.nan
x[5] # np.nan
Run Code Online (Sandbox Code Playgroud)

我发现最接近的东西是np.pad

我知道我可以编写一个包装器类,但是我想知道是否有任何有效的numpy方法可以做到这一点。

hpa*_*ulj 1

In [360]: x = np.array([1,2,3])                                                                        
In [361]: x[1]                                                                                         
Out[361]: 2
Run Code Online (Sandbox Code Playgroud)

np.take让您可以通过模式控制进行索引。默认情况下,如果索引越界,则引发错误(有关其他选项,请参阅文档):

In [363]: np.take(x,1)                                                                                 
Out[363]: 2
In [364]: np.take(x,-2)                                                                                
Out[364]: 2
In [365]: np.take(x,5)                                                                                 
----
IndexError: index 5 is out of bounds for size 3
Run Code Online (Sandbox Code Playgroud)

您可以编写一个小函数,将其包装在 a 中,在 的情况下try/except返回。np.nanIndexError

请记住,这np.nan是一个浮点数,而您的示例数组是整数数据类型。