python - 如何在 R 或 MATLAB 中打开 3D .npy 文件?

标签 python arrays r matlab numpy

我有形状为 [512, 512, x] 的 .npy 文件,其中 x 最大为 400。在这些数组中(这是正确的术语吗?我不确定正确的术语),有 float 零和一之间的点数。它们是噪声图像的灰度级。图像是 512x512 像素,每个 npy 文件我保存了不同数量的图像。

我现在想对噪声图像进行一些计算,但一直无法在 R 或 MATLAB 中导入数组:

在 R 中,我尝试了 RcppCNPy - 打包并收到错误“npyLoad 中不支持的维度”。

在 MATLAB 中,我尝试了 readNPY - 函数并收到错误“根据标题,此文件似乎不是 NUMPY 格式。”但是我的文件没有标题。难道这个函数只适用于二维数组?

如何访问我之前保存的 3D 数组?

非常感谢任何有关 MATLAB 或 R 的帮助!

最佳答案

npy 是一种独特的 numpy 文件格式。是的,它确实有一个标题 block ,其中包含版本、维度、步幅和 dtype 等信息。

快速浏览一下 readNpy 就会发现它是相对较新的和实验性的。与他们核对能力。

np.savetxt 写入文本 CSV 文件。这被广泛使用(查看有关 np.genfromtxtnp.loadtxt 的 SO 问题的数量),但“纸”的本质是 2d - 行列。我不知道编写高维数组的任何标准 - 重新整形为 2d 并返回可能是最简单的。

scipy.io.savemat 可以编写 MATLAB 兼容的 .mat 文件。这(和 loadmat)能够读/写更高的 D 数组,以及 MATLAB 结构和单元。这是 numpy 和 MATLAB 之间经过最佳测试的文件交换。

较新的 MATLAB 保存格式使用 HDF5 文件。 Python h5py 包也可以读取和写入它们。关于读取由 MATLAB 生成的此类文件,出现了一些 SO 问题。 Python-created HDF5 dataset transposed in Matlab

请记住,MATLAB 维度排序等同于 numpy 'F' 顺序。

比较:

xf=np.arange(12).reshape(3,4,order='F')   # saved with savemat

>> xf(:).'      # in octave
ans =
   0   1   2   3   4   5   6   7   8   9  10  11

没有order=F, octave给

 0   4   8   1   5   9   2   6  10   3   7  11

>> xf
xf =
   0   3   6   9
   1   4   7  10
   2   5   8  11

>> x
x =
   0   1   2   3
   4   5   6   7
   8   9  10  11

np.asfortranarray(x) 似乎没有什么不同。

关于python - 如何在 R 或 MATLAB 中打开 3D .npy 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40529100/

相关文章:

python - 通过调用打印 $env :myVar=myvalue 的 python 脚本在 powershell 中设置环境变量

python - 如何调用限制为 1 的 SQLAlchemy 查询?

javascript - 为什么将子数组/对象的属性设置为其索引最高的 sibling 的值?

r - 将模拟泊松分布添加到 ggplot

r - 使用 R 的 Table 函数对按另一个变量分组的数据进行交叉制表

python - 在 Django 中创建随机 URL?

python - fig, ax = plt.subplots() 中的解包如何适用于多个子图?

javascript - 在多维数组上添加一个值

javascript - 使用 javascript 读取条形码

r - 如何在R中绘制多条线