保存 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.save
、np.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': '.npy
文件?
2) 您是否尝试设置np.seed(number)
以获得恒定的结果?
是的,我在我的 Jupyter 笔记本上试过了,它工作正常。非常感谢!以上是关于保存 4D 数组而不丢失其格式的主要内容,如果未能解决你的问题,请参考以下文章
PYSPARK:-在数据框中爆炸数组而不丢失空值:'DataFrame'对象没有属性'_get_object_id'