diskarray 基于mmap的numpy数组实现

linker   ·   发表于 2个月前   ·   Python

首先要安装diskarray

Ubuntu环境下: sudo -H pip3 install diskarray

In [1]:
import numpy as np
from diskarray import DiskArray

data = np.array([[2 , 3, 4], [1, 2, 3]])

da = DiskArray('/tmp/disk.array', shape=(0, 3), dtype=np.float32)

da.extend(data)

da[:]
Out[1]:
memmap([[2., 3., 4.],
        [1., 2., 3.]], dtype=float32)

上述代码在/tmp目录建立了一个disk.array文件来存储数组。

In [2]:
len(da)
Out[2]:
2
In [3]:
da[0] #获取第0行
Out[3]:
memmap([2., 3., 4.], dtype=float32)
In [4]:
#当需要覆盖数据内容的时:
da.append(data[0]) # 注意这里只能append一行数据
len(da)
Out[4]:
3
In [5]:
da.extend(data) # 这里可以extend多行数据
len(da)
Out[5]:
5
In [6]:
for line in da[:5]:
    print(line)
[2. 3. 4.]
[1. 2. 3.]
[2. 3. 4.]
[2. 3. 4.]
[1. 2. 3.]
In [ ]:
 
2 Reply   |  Until 2个月前 | 31 View

linker
发表于 2个月前

diskarray 基于mmap的numpy数组实现

首先要安装diskarray

Ubuntu环境下: sudo -H pip3 install diskarray

In [1]:
import numpy as np
from diskarray import DiskArray

data = np.array([[2 , 3, 4], [1, 2, 3]])

da = DiskArray('/tmp/disk.array', shape=(0, 3), dtype=np.float32)

da.extend(data)

da[:]
Out[1]:
memmap([[2., 3., 4.],
        [1., 2., 3.]], dtype=float32)

上述代码在/tmp目录建立了一个disk.array文件来存储数组。

In [2]:
len(da)
Out[2]:
2
In [3]:
da[0] #获取第0行
Out[3]:
memmap([2., 3., 4.], dtype=float32)
In [4]:
#当需要覆盖数据内容的时:
da.append(data[0]) # 注意这里只能append一行数据
len(da)
Out[4]:
3
In [5]:
da.extend(data) # 这里可以extend多行数据
len(da)
Out[5]:
5
In [6]:
for line in da[:5]:
    print(line)
[2. 3. 4.]
[1. 2. 3.]
[2. 3. 4.]
[2. 3. 4.]
[1. 2. 3.]
In [ ]:
 

评论列表

  • 加载数据中...

编写评论内容

linker
发表于 2个月前

对于数据量特别大的情况比较有用。

因为mmap可以超出实际的内存大小很多。

评论列表

  • 加载数据中...

编写评论内容
LoginCan Publish Content