Skip to main content
 首页 » 编程设计

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

2025年05月04日20artech

我想把一个大数组切成小数组,并给每个小数组取不同的名字。

我使用 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]) 

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

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] 

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

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

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

  • 有人提到我这个问题可能与 this one 重复,但是我真的不明白“可变变量”是什么意思,尽管我们都被推荐使用字典。

请您参考如下方法:

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

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