- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我想更改 npz
文件中的一个值。
npz
文件包含多个 npy
,我希望除了一个('run_param
')之外的所有文件都保持不变,我想保存在原始文件上。
这是我的工作代码:
DATA_DIR = 'C:\\Projects\\Test\\data\\'
ass_file = np.load( DATA_DIR + 'assumption.npz' )
run_param = ass_file['run_param']
print ass_file['run_param'][0]['RUN_MODE']
ass_file['run_param'][0]['RUN_MODE'] = 1 (has no effect)
print ass_file['run_param'][0]['RUN_MODE']
print run_param[0]['RUN_MODE']
run_param[0]['RUN_MODE'] = 1
print run_param[0]['RUN_MODE']
这会产生:
0
0
0
1
我似乎无法更改原始 npy
中的值。
我之后要保存的代码是:
np.savez( DATA_DIR + 'assumption.npz', **ass_file ) #
ass_file.close()
如何让它发挥作用?
最佳答案
你从 np.load
得到的是一个 NpzFile
,它可能看起来像一本字典,但实际上不是。每次访问它的项目时,它都会从文件中读取数组,并返回一个新对象。演示:
>>> import io
>>> import numpy as np
>>> tfile = io.BytesIO() # create an in-memory tempfile
>>> np.savez(tfile, test_data=np.eye(3)) # save an array to it
>>> tfile.seek(0) # to read the file from the start
0
>>> npzfile = np.load(tfile)
>>> npzfile['test_data']
array([[ 1., 0., 0.],
[ 0., 1., 0.],
[ 0., 0., 1.]])
>>> id(npzfile['test_data'])
65236224
>>> id(npzfile['test_data'])
65236384
>>> id(npzfile['test_data'])
65236704
同一对象的id
函数总是相同的。来自Python 3 Manual :
id(object) Return the “identity” of an object. This is an integer which is guaranteed to be unique and constant for this object during its lifetime. ...
这意味着在我们的例子中,每次调用 npz['test_data']
时,我们都会得到一个新对象。这种“惰性读取”是为了保留内存并只读取所需的数组。在您的代码中,您修改了该对象,但随后将其丢弃并稍后读取一个新对象。
如果 npzfile
是这个奇怪的 NpzFile
而不是字典,我们可以简单地将它转换为字典:
>>> mutable_file = dict(npzfile)
>>> mutable_file['test_data'][0,0] = 42
>>> mutable_file
{'test_data': array([[ 42., 0., 0.],
[ 0., 1., 0.],
[ 0., 0., 1.]])}
您可以随意编辑字典并保存。
关于python - 如何更改 .npz 文件中的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25891186/
我正在使用 Spyder IDE 和 Python 2.7。 我有一个名为 data.npz 的 npz 文件,它是给我的。我想将此文件加载到 Spyder 并查看其中的内容。 首先,我已经这样做了:
有人可以向我解释为什么这不起作用: 步骤 1) 创建一个简单的 NPZ 文件 import numpy as np a1 = np.zeros((3,2), dtype=np.double) np.s
我有几个 .npz 文件。所有 .npz 文件都具有相同的结构:每个文件仅包含两个变量,且变量名始终相同。截至目前,我只需循环所有 .npz 文件,检索两个变量值并将它们附加到某个全局变量中: # L
我使用以 Python .npz 格式存储的数组。我有很多这样的文件,它们都共享相同的公共(public)结构:文件名 my_file_var1_var2_var3.npz 包含以下项目(所有数组都是
我需要将几个 numpy 数组和 Python 对象保存到磁盘。我想完全最小化 I/O。我不介意加载器或保存器是否必须在内存中进行任何提升,但I/O 占用(实际访问)应该是最低的,因为当许多作业时,我
我有许多形状可能有所不同的 .npz 文件,我想找到哪个文件的形状最大。 npz 中有 2 个数组,我正在寻找第二个数组中最大的一个。以下代码片段有效,但返回形状所需的时间比我预期的要长。这是实现这一
我想更改 npz 文件中的一个值。 npz 文件包含多个 npy,我希望除了一个('run_param')之外的所有文件都保持不变,我想保存在原始文件上。 这是我的工作代码: DATA_DIR = '
谁能分享一些关于 *.npz 内部数据组织的信息?一些文档等。只是找不到任何东西.. 最佳答案 文档如下: Format of .npz files , 指的是 Format of .npy file
Numpy能够读写磁盘上的文本数据或二进制数据。 将数组以二进制格式保存到磁盘 np.load和np.save是读写磁盘数组数据的两个主要函数,默认情况下,数组是以未压缩的原始二进制格式保存在扩
我是 Python 的新手,我急切地从 MATLAB 迁移到 IPython 作为我在实验室进行数据分析的首选语言。 在 MATLAB 中,经过一段时间的数据处理后,我会做 >>> save('myr
Numpy 允许在单个 npz 文件中导出多个数组,然后可以使用以下方法加载该文件: infile = "somefile.npz" inData = np.load( infile) print(
我使用 Web 服务通过 AWS 上的 Jupyter Notebook 来训练我的一些深度学习模型。出于成本原因,我希望将数据作为 .npz 文件存储在我自己的服务器上,并将它们直接加载到我的远程计
如何在不删除之前数据的情况下将数据写入.npz文件? 我正在使用 python numpy 包,我在其中使用 savez() 来保存变量。 但是,每次我将信息保存到文件时,它都会删除以前的信息。例如,
我正在 build 一辆自动驾驶遥控汽车。我有 100 张从 pi 相机拍摄的图像,每一张都被命名为 Direction.jpg 。如何将这些图像转换为单个 .npz 文件,以便我可以训练神经网络。
我有一个如下所示的数据文件: 58f0965a62d62099f5c0771d35dbc218 0.868632614612579 [0.028979932889342308
我有一个例子,我想使用 mmap 模式打开压缩的 numpy 文件,但似乎找不到任何有关它如何在幕后工作的文档。例如,它会在内存中解压存档然后进行 mmap 吗?它会即时解压吗? 该配置缺少文档。 最
我有一个未知的 .npz 文件,想看看里面有什么。我对 Python 很陌生。 >>> import numpy >>> b = numpy.load('data.npz') >>> print(b.
我正在寻找一种从多个不同类型的 numpy 数组中生成压缩二进制字符串的方法。 :D本题推荐的方法: Storing and loading numpy arrays as files 就是使用下面的
我有一个数组: >>> data = np.ones((1,3,128)) 我使用 savez_compressed 将它保存到文件中: >>> with open('afile','w') as f
我是Python新手。我想转换 .npz file (.npz 是 numpy 文件格式)转换为 .csv 文件以在 R 中使用它。请建议一种方法 最佳答案 尝试如下: import numpy as
我是一名优秀的程序员,十分优秀!