在文本中是整数,读取h5文件中变成小数,从0变成0.0,图一是整数,图二是小数,图三是运行的程序,怎么解决?
你可以在写入数据时指定数据类型为整数,这样就不会出现小数的情况了。具体代码如下所示:
import h5py
import numpy as np
# 生成数据和标签
data = np.random.randint(0, 10, size=(100, 28, 28))
labels = np.random.randint(0, 10, size=(100,))
# 写入h5文件
with h5py.File('data.h5', 'w') as f:
f.create_dataset('data', data=data, dtype='i')
f.create_dataset('labels', data=labels, dtype='i')
在这个例子中,我们使用numpy.random.randint
方法生成了数据和标签,数据类型为整数。在写入h5文件时,我们指定dtype='i'
,这样数据和标签就会以整数形式存储在h5文件中。
如果你已经有了数据和标签,可以使用astype
方法将其类型转换为整数,如下所示:
import h5py
import numpy as np
# 读取数据和标签
data = np.load('data.npy')
labels = np.load('labels.npy')
# 转换数据类型为整数
data = data.astype('i')
labels = labels.astype('i')
# 写入h5文件
with h5py.File('data.h5', 'w') as f:
f.create_dataset('data', data=data, dtype='i')
f.create_dataset('labels', data=labels, dtype='i')
你可以增加参数 dtype 用于指定数据类型为int或者float,从而格式化你的数据格式为整数或者小数。当然你也可以使用循环,在循环中对每一个数据进行转换,转为整数或者小数,直接int(num) 或者float(num)即可。
以下答案由GPT-3.5大模型与博主波罗歌共同编写:
问题出现的原因是由于保存在 h5 文件中的数据被默认存储成了浮点数类型(float)。在读取 h5 文件时,即使最初保存的是整数类型的数据,也会被转换成浮点数类型的数据。
解决方案是在保存数据的时候明确指定保存的数据类型为整数类型。具体方法是在 h5py.File
中设置 dtype
参数为 'i'
或者 'int'
。
下面是保存数据为整数类型的示例代码:
import h5py
import numpy as np
data = np.array([[1, 2], [3, 4]], dtype='int') # 将数据类型设置为整数类型
with h5py.File('data.h5', 'w') as f:
f.create_dataset('data', data=data)
读取数据时可以将浮点数类型的数据转换成整数类型的:
import h5py
import numpy as np
with h5py.File('data.h5', 'r') as f:
data = np.array(f['data'])
data = data.astype('int') # 将数据类型转换为整数类型
print(data)
希望这个答案对您有帮助!
如果我的回答解决了您的问题,请采纳!
python与h5结合实例_使用h5py合并所有h5文件
可以借鉴下
https://blog.csdn.net/weixin_39908985/article/details/110625369
在Linux下:
1)修改文件,添加 #!/usr/bin/python3
2)修改文件权限,添加可执行权限:chmod u+x hello.py
3)运行
此种方式执行的时候,一定要在脚本文件中指定解释器,否则无法直接运行脚本文件
4) python脚本传递参数