簡體   English   中英

有沒有辦法在現有二進制文件周圍包裝 numpy `ndarray` 接口?

[英]Is there a way to wrap an numpy `ndarray` interface around an existing binary file?

我有一個包含視頻數據的 binary.network 捕獲 ( .pcapng ) 文件。 我正在用 scapy 解析.pcapng並且我可以提取數據,但是我正在處理的視頻序列非常大,如果我一次加載非常多的數據,我想要執行的操作很快就會讓我的機器停止運轉。 處理此問題的一種方法是提取所有數據並將其保存到 mmap 文件中,或者更好的是,HDF5。 但是,在我注冊復制所有數據之前,我想看看是否可以 memory map 現有文件就位。 有沒有辦法將不連續的 mmap 制作到現有文件中,告訴 ndarray object 在哪里可以找到與給定索引關聯的 memory,而 memory 可能位於文件中的任意位置? 我沒有在 mmap 中找到任何好的類似物,它假設有一個連續的文件可用。 我想象一些加載文件的ndarray子類,掃描文件以.pcapng文件中所有相關圖像數據的邊界,並提供ndarray方法的自定義實現, __index__方法可以返回適當的文件偏移量給定索引或切片。 這是瘋子,還是有更好的(已經解決的)方法來做到這一點?

從文件構造一個mmap.mmap object 並將其傳遞給numpy.ndarray構造函數。 例如:

import os
import numpy

with open("filename", "rb") as f:
    mm = mmap.mmap(f.fileno(), 0, access=mmap.ACCESS_READ)

nd = numpy.ndarray(1000000,buffer=mm)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM