Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 可以在.npz文件中无序排列数组的顺序吗?_Python_Arrays_Numpy - Fatal编程技术网

Python 可以在.npz文件中无序排列数组的顺序吗?

Python 可以在.npz文件中无序排列数组的顺序吗?,python,arrays,numpy,Python,Arrays,Numpy,我有一个数组,我使用 np.savez('test2.npz', *NumpyArrayOfArrays) 我想知道是否可以改变数组的保存顺序 我试过了 np.随机.洗牌(测试) 不起作用您是否尝试过普通的旧随机.shuffle() 如果我从(4,3)数组开始: 然后按原样保存,*arr将其视为1d数组(行)的列表,并将每个数组保存到npz存档中的单独文件中: In [93]: np.savez('test.npz', *arr) load为我提供了这些数组的字典: In [94]: d =

我有一个数组,我使用

np.savez('test2.npz', *NumpyArrayOfArrays)
我想知道是否可以改变数组的保存顺序

我试过了

np.随机.洗牌(测试)


不起作用

您是否尝试过普通的旧
随机.shuffle()

如果我从(4,3)数组开始:

然后按原样保存,
*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])
或者使用OS
解压
列出归档文件:

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 [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]])
除了名字,“保存顺序”其实并不重要。或者至少我不明白你为什么在乎

或者,我可以使用字典方法设置归档文件名

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 [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 [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]])

谢谢,这将对我非常有用,但我需要一些可以洗牌的npz文件本身,因为我需要做几次通过它。我可以做的是保存几个版本的无序数据,但最终我需要一些可以在需要时对其进行无序处理的东西。我不明白你所说的无序处理文件是什么意思。
npz
文件是一个
zip
存档文件。顺序是如何或为什么重要的?@SantoshGupta7是的,所以在加载时只是洗牌数据?