切片数组并通过使用Python中的循环为每个小数组指定特定的名称

Chu*_*pin 1 python arrays loops

我想将一个大数组切成小数组,并为每个小数组取不同的名称。

我使用2 for循环将10 * 10大数组切成25 2 * 2数组,我可以在每个循环中将它们打印出来,但是我没有给每个数组指定特定的名称。我也尝试将'.format()'函数合并到循环中,但仍然失败。

下面的代码工作正常,并打印出我想要的切片2 * 2矩阵:

import numpy as np

a = np.arange(100).reshape(10, 10)

for p in range(0,a.shape[0],2):
    for q in range(0,a.shape[1],2):
        print(a[p:p+2,q:q+2])
Run Code Online (Sandbox Code Playgroud)

但是当我尝试为每个生成的数组生成特定名称时,以下代码失败:

import numpy as np

a = np.arange(100).reshape(10, 10)

for p in range(0,a.shape[0],2):
    for q in range(0,a.shape[1],2):
        'slice_{0}_{1}'.format(p,q) = a[p:p+2,q:q+2]
Run Code Online (Sandbox Code Playgroud)

我希望得到以下格式的数组:

slice_0_0 = array([[ 0, 1],[10,11]])
slice_0_2 = array([[ 2, 3],[12,13]])
...
slice_8_8 = array([[88,89],[98,99]])
Run Code Online (Sandbox Code Playgroud)

这样我就可以使用数组名称应用这些数组,而不是直接加载原始的大数组。

  • 我提到这个问题可能是重复的这一个,但我真的没有得到什么“变量变量”的意思,但我俩都推荐使用的字典。

vle*_*tre 5

最好的方法是创建一个字典:

d={}

for p in range(0,a.shape[0],2):
    for q in range(0,a.shape[1],2):
        d['slice_{0}_{1}'.format(p,q)] = a[p:p+2,q:q+2]

In [7] : d['slice_0_0']
Out[7] : array([[ 0,  1], [10, 11]])
Run Code Online (Sandbox Code Playgroud)