python - NumPy mmap : "ValueError: Size of available data is not a multiple of data-type size."

标签 python numpy mmap

我正在尝试将“data.txt”中的数据获取到 numpy 数组中,并使用 matplotlib 绘制它。每行数据如下所示:

“1”11.658870417634 4.8159509459201

大约一千万行。

我试图将其放入内存映射中,但不断收到此错误:

ValueError: Size of available data is not a multiple of data-type size.

这是我正在使用的代码:

import numpy
import matplotlib

matplotlib.use('Agg')
import matplotlib.pyplot as plt

datatype=[('index',numpy.int), ('floati',numpy.float32), ('floatq',numpy.float32)]
filename='data.txt'

def main():
    data = numpy.memmap(filename, datatype, 'r') 
    plt.plot(data['floati'],data['floatq'],'r,')
    plt.grid(True)
    plt.title("Signal-Diagram")
    plt.xlabel("Sample")
    plt.ylabel("In-Phase")
    plt.savefig('foo2.png')

if __name__ == "__main__":
    main()  

如果您能帮我找出问题所在,我将不胜感激。

最佳答案

这是一个文本文件,而不是二进制文件。 memmap 仅当数据存储为二进制时才有效(即存储为数组将存储在内存中)。

您可以通过逐行读取文件并将每个转换后的行存储在可写的 memmap 中,将文件转换为二进制文件。

关于python - NumPy mmap : "ValueError: Size of available data is not a multiple of data-type size.",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15303087/

相关文章:

opencv - 图片中的Scipy绘制边框

c - mmap 问题 -> 段错误

Python 模块安装问题

python - 我将如何使用 Selenium 选择下拉菜单

python - imread 中可以使用变量名吗? Python 中的基本问题

python - numpy:gzipped 文件的 fromfile

c - Hooking mmap系统提供实时类型转换?

large-files - 为文件调用两次 mmap

python - 对列进行排序,使一列位于另一列的值之后

python - 使用 ManyToManyField 时出现重复字段