保存 4D 数组而不丢失其格式

Posted

技术标签:

【中文标题】保存 4D 数组而不丢失其格式【英文标题】:Saving 4D array without losing its format 【发布时间】:2021-08-27 16:35:17 【问题描述】:

我有这个 4D 数组 (numpy.ndarray),我需要以一种在我保存它时它的格式不会改变的方式保存它(因为它应该保持不变),然后在我的 Google Colab 文件中重用它。我尝试以不同的格式保存它,当我上传它并在我的代码中预览它时,即使我将它保存为 .npy 格式,也不再保留以前的格式。我还尝试使用我的 GitHub 存储库中的原始链接导入日期或从我的本地设备上传日期,但仍然没有机会。对于这个问题,我将不胜感激您的 cmets!

进一步阐述:

这是我用来生成 4D 数组的代码:

num1=100000
size = (num1, 8, 4, 4)
prob_0 = 0.3 # 30% of zeros
prob_1 = 1 - prob_0 # 70% of ones
P = np.random.choice([0, 1], size=size, p=[prob_0, prob_1])

我需要将此 P 保存为文件并在 Google Colab 中使用。我必须保存它以维护初始数据,并且每次运行代码时都不会提出不同的 4D 数组。此数据(即 P)必须保持不变。

【问题讨论】:

你可以试试numpy文件格式 这能回答你的问题吗? How to save and load numpy.array() data properly? 保存/加载 4D numpy 数组对我有用。您能否提供更多详细信息,这是一个简单的 4D 数组吗?您所说的格式未保留是什么意思? 您需要更具体地了解如何保存数组。在保存之前测试数组 - shape 和 dtype。然后在同一台机器上测试负载。然后继续对上传的进行测试。如果有差异,请准确描述。一般的“如果不起作用”的问题不会得到好的答案。通常默认的np.save/load 对有效。 @crayxt 感谢您的评论。我已经用更多信息更新了我的问题。 【参考方案1】:

通常np.savenp.load 有效

>>> P.shape
(100000, 8, 4, 4)
>>> np.save("P.npy", P)
>>> P2 = np.load("P.npy")
>>> P2.shape
(100000, 8, 4, 4)
>>> np.allclose(P, P2)
True

【讨论】:

我试过了,但由于它是一个 dict 对象,当我将 .npy 文件上传到 Google Colab 并打印它时,我收到一条消息,开头如下: 'P.npy': b"\x93NUMPY\ x01\x00v\x00'descr': ' 1) 会不会是 Google Collab 搞砸了 .npy 文件? 2) 您是否尝试设置np.seed(number) 以获得恒定的结果? 是的,我在我的 Jupyter 笔记本上试过了,它工作正常。非常感谢!

以上是关于保存 4D 数组而不丢失其格式的主要内容,如果未能解决你的问题,请参考以下文章

删除数组值而不丢失引号[重复]

有啥方法可以打印 rmarkdown 表而不丢失颜色?

PYSPARK:-在数据框中爆炸数组而不丢失空值:'DataFrame'对象没有属性'_get_object_id'

Google脚本:从文档生成电子邮件会丢失格式

如何通过GCS将GA360表从Big query导出到雪花作为json文件而不丢失数据?

在 Excel 中保存为 CSV 会丢失区域日期格式