Если я начну с (4,3) массива:
In [92]: arr
Out[92]:
array([[ 0, 1, 2],
[ 3, 4, 5],
[ 6, 7, 8],
[ 9, 10, 11]])
и сохраню его как вы, *arr
будет обрабатывать его как список 1d массивов (строк), сохраняя каждый вОтдельный файл в npz
архиве:
In [93]: np.savez('test.npz', *arr)
load
дает мне словарь этих массивов:
In [94]: d = np.load('test.npz')
In [96]: list(d.keys())
Out[96]: ['arr_0', 'arr_1', 'arr_2', 'arr_3']
In [97]: d['arr_1']
Out[97]: array([3, 4, 5])
Или используя ОС unzip
для просмотра архива:
In [101]: !unzip -v test.npz
Archive: test.npz
Length Method Size Cmpr Date Time CRC-32 Name
-------- ------ ------- ---- ---------- ----- -------- ----
152 Stored 152 0% 1980-01-01 00:00 ea1240f7 arr_0.npy
152 Stored 152 0% 1980-01-01 00:00 c2903dd0 arr_1.npy
152 Stored 152 0% 1980-01-01 00:00 987e678b arr_2.npy
152 Stored 152 0% 1980-01-01 00:00 fcae29f8 arr_3.npy
-------- ------- --- -------
608 608 0% 4 files
Помимо имен, «порядок сохранения» на самом деле не имеет значения.Или, по крайней мере, я не понимаю, почему вас это волнует.
В качестве альтернативы я мог бы установить имена файлов архива с использованием словарного подхода
In [114]: names = ['w','x','y','z']
In [115]: dd = {n:v for n,v in zip(names,arr)}
In [116]: dd
Out[116]:
{'w': array([0, 1, 2]),
'x': array([3, 4, 5]),
'y': array([6, 7, 8]),
'z': array([ 9, 10, 11])}
In [117]: np.savez('test.npz', **dd)
In [118]: d = np.load('test.npz')
In [119]: list(d.keys())
Out[119]: ['w', 'x', 'y', 'z']
In [120]: d['x']
Out[120]: array([3, 4, 5])
In [121]: !unzip -v test.npz
Archive: test.npz
Length Method Size Cmpr Date Time CRC-32 Name
-------- ------ ------- ---- ---------- ----- -------- ----
152 Stored 152 0% 1980-01-01 00:00 ea1240f7 w.npy
152 Stored 152 0% 1980-01-01 00:00 c2903dd0 x.npy
152 Stored 152 0% 1980-01-01 00:00 987e678b y.npy
152 Stored 152 0% 1980-01-01 00:00 fcae29f8 z.npy
-------- ------- --- -------
608 608 0% 4 files
Я могу использовать словарные методы для извлечения значений изархив:
In [122]: list(d.items())
Out[122]:
[('w', array([0, 1, 2])),
('x', array([3, 4, 5])),
('y', array([6, 7, 8])),
('z', array([ 9, 10, 11]))]
In [123]: list(d.values())
Out[123]: [array([0, 1, 2]), array([3, 4, 5]), array([6, 7, 8]), array([ 9, 10, 11])]
In [124]: np.stack(_)
Out[124]:
array([[ 0, 1, 2],
[ 3, 4, 5],
[ 6, 7, 8],
[ 9, 10, 11]])