我想把一个大数组切成小数组,并给每个小数组取不同的名字。
我使用 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]])
