从包含np.fromfile
和np.memmap
的任何二进制文件读取后,我的指定数据类型存在各种问题。
我正在阅读以下内容:
openfile = open(mypath,'rb')
openfile.seek(start_byte)
myvalue = np.fromfile(openfile, dtype = np.uint64, count=1)
print myvalue
返回:
myvalue = [1234]
myvalue
有8个字节并被解释为ndarray,但我想要一个uint64值,将其用作索引。
1)如何防止np.fromfile写入ndarray?
如果我正在尝试:myvalue = myvalue[0]
myvalue
完全丢失了它的数据类型。
2)当我访问第一个
时,为什么myvalue
会丢失它的数据类型
我必须用我的数组做类似的事情:
data.extend([myvalue for l in range(myvalue)])
尝试再次分配数据类型:myvalue = myvalue[0].astype(np.uint64)
。现在我明白了:
self.data_array[count:count+myvalue,0] = data[count:count+myvalue]
TypeError: slice indices must be integers or None or have an __index__ method
3)这里出了什么问题?
如果我将myvalue分配为:myvalue = myvalue[0].astype(np.int32)
数据被错误地解释,我得到:-35566848567
等。
4)为什么自从读入后程序仍然错误地解释了myvalue
myvalue = myvalue[0].astype(np.int32)
不是
myvalue = myvalue[0].astype(np.uint64)
答案 0 :(得分:0)
原谅可能的非答案,但以这种方式发布代码更容易......
为什么你认为myvalue丢失了它的类型信息?我在这里尝试它时不会这样做(Python 2.7):
>>> myvalue = np.array([1234], np.uint64)
>>> myvalue = myvalue[0]
>>> type(myvalue)
<type 'numpy.uint64'>
答案 1 :(得分:0)
有关于在其文档中使用fromfile
的警告:
注 -----不要依赖
tofile
和fromfile
的组合进行数据存储,因为生成的二进制文件不是平台 独立。特别是,没有字节顺序或数据类型信息 保存。数据可以以独立于平台的.npy
格式存储 使用save
和load
代替。