擅长:python、mysql、java
<p>除了shoyer提供的两个非常好的选择之外,我发现还有另一个解决方案在实践中很有用:</p>
<p>向数据集中添加另一个长度为2的维度,它表示数据的实部和虚部。这类似于将实部和虚部分别存储在不同的变量中,但根据我的经验,在某些情况下可以更好地使用。在</p>
<P>例如,存储维度^ ^ {CD1>}变量,{{< CD2>},其中{{CD3>}是实假想的,^ {CD4}}是任意维,给出了一个与C中的{{a1}的维度^ {< CD4>}相当的一维内存布局,或者C++中的等价{^ < CD7>}。在</p>
<p>阅读和写作是这样的:</p>
<pre><code>def save_complex(dataset, *args, **kwargs):
ds = dataset.expand_dims('ReIm', axis=-1) # Add ReIm axis at the end
ds = xarray.concat([ds.real, ds.imag], dim='ReIm')
return ds.to_netcdf(*args, **kwargs)
def read_complex(*args, **kwargs):
ds = xarray.open_dataset(*args, **kwargs)
return ds.isel(ReIm=0) + 1j * ds.isel(ReIm=1)
</code></pre>
<p>正如示例所示,这种方法对于数据集(不仅仅是数据数组)很容易实现。在</p>