使用numpy.save保存Numpy 2D数组列表(这些数组一起是锯齿状的)

don*_*lan 6 python arrays numpy

我有一个大的图像数据集.当我使用图像时,我有几个组件 - 镜像图像,常规图像,特征向量矩阵和特征值向量.

我想存储它像:

training_sunsets_data = [cropped_training_sunsets,
                         mirrored_training_sunsets,
                         rgb_cov_eigvec_training_sunsets,
                         rgb_cov_eigval_training_sunsets]

np.save('training_sunsets_data',training_sunsets_data)
Run Code Online (Sandbox Code Playgroud)

当我写这篇文章时,我正在测试它(因为我确信它会失败),最奇怪的事情发生在我这样做时:它起作用了.

此外,当我将其加载回代码时,它是类型ndarray,但它是一个锯齿状的数组.


如果numpy不允许锯齿状多维数组,这怎么可能?我是否只是找到了一种在numpy中创建锯齿状数组的后门方法?

gdl*_*lmx 5

在我的机器上测试后:

  import numpy as np
  np.save('testnp.npy', [[2,3,4],[1,2]])
  np.load('testnp.npy')
  #   array([[2, 3, 4], [1, 2]], dtype=object)
Run Code Online (Sandbox Code Playgroud)

如示例代码所示,已加载的对象为类型ndarray,但其数据类型为object。这意味着np.save存储一个python对象数组,可以是任何对象。根据文档,似乎使用python pickle打包那些对象。

所以您没有找到后门,它的行为与预期的一样。