這使用公共API目前不可能。此信息是可用私有API。如果你看一下DataArray.variable._data
從磁盤加載一個數組,你會看到一個MemoryCachedArray
對象(如xarray V0.9的),如果它被緩存:
>>> xarray.DataArray([[1, 2], [3, 4]]).to_netcdf('foo.nc')
>>> array = xarray.open_dataarray('foo.nc')
>>> array.variable._data
MemoryCachedArray(array=CopyOnWriteArray(array=LazilyIndexedArray(array=ScipyArrayWrapper(array=array([[1, 2],
[3, 4]], dtype=int32)), key=(slice(None, None, None), slice(None, None, None)))))
如果數據足夠大,您擔心關於緩存存在問題,我絕對推薦使用cache=False
打開任何文件,例如xarray.open_dataarray('foo.nc', cache=False)
。在這種情況下,你不會看到在_data
的MemoryCachedArray
對象:
>>> array.variable._data
CopyOnWriteArray(array=LazilyIndexedArray(array=ScipyArrayWrapper(array=array([[1, 2],
[3, 4]], dtype=int32)), key=(slice(None, None, None), slice(None, None, None))))
如果你仍然認爲你需要能夠檢查是否緩存有可能在現有xarray對象,請提高我們的GitHub頁面上的問題討論潛在的新API。
我實際上並不認爲這在xarray目前使用公共API是可能的。 @shoyer會有一個明確的答案。 – jhamman