在numpy数组的特定行中加载

2024-06-10 22:04:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我已使用np.savez()保存了一个numpy数组,并正在使用以下命令打开它:

a = np.load('/file.npz', allow_pickle=True)
a = cp.array(a['arr_0'])

但是如何读取数组的特定行a?我知道我可以通过a[x:y]访问某些行,其中x和y是常数,因此x<;但是我不想这样做,因为矩阵a非常大。每次加载整个内容似乎效率低下

非常感谢在索引x和y之间的特定行中加载比以典型方式加载更快的任何帮助!一个答案建议在答案中使用memmap,但这并不能提高速度。提前感谢您的帮助:)


Tags: 答案命令numpytruenpload数组array
1条回答
网友
1楼 · 发布于 2024-06-10 22:04:08

不确定我是否正确,但从@KyleParsons的评论中,我得到:


import numpy as np
import sys

arr = np.random.randint(0,999,(100,5))

print(arr,'\n ARR SIZE :', sys.getsizeof(arr))


# for i in range(arr.shape[0]):
#     arr_row = np.copy(arr[i])
#     print(i , '  :  ',arr_row)
    
    
np.save('test_100_X_5', arr)    


a = np.load('test_100_X_5.npy', allow_pickle=True, mmap_mode='r')

print('\na : ',type(a), 'SIZE : ',  sys.getsizeof(a),'\n')

for i in range(a.shape[0]):
    a_row = np.copy(a[i])
    print(i , '  :  ',a_row,' size :', sys.getsizeof(a_row))
    

请参阅加载对象“a”与整个数组“arr”和单行的大小:(“i”)

PS

如果我错了,请纠正,我也在努力学习numpy

相关问题 更多 >