Python matplotlib中的axes.flat做什么?
我见过使用matplotlib的各种程序,这些程序使用axes.flat函数,如以下代码:Python matplotlib中的axes.flat做什么?,python,matplotlib,Python,Matplotlib,我见过使用matplotlib的各种程序,这些程序使用axes.flat函数,如以下代码: for i, ax in enumerate(axes.flat): 这是做什么的呢?让我们看一个简单的例子,我们用 这里,轴是一个轴的numpy数组 print(type(axes)) > <type 'numpy.ndarray'> print(axes.shape) > (3L, 2L) 它将打印数字2 3 4 5 6 7 作为阵列上的一个interator,您可以使用它
for i, ax in enumerate(axes.flat):
这是做什么的呢?让我们看一个简单的例子,我们用 这里,
轴
是一个轴的numpy数组
print(type(axes))
> <type 'numpy.ndarray'>
print(axes.shape)
> (3L, 2L)
它将打印数字2 3 4 5 6 7
作为阵列上的一个interator,您可以使用它在3x2轴阵列的所有轴上循环
for i, ax in enumerate(axes.flat):
对于每个迭代,它将从该数组中生成下一个轴,这样您就可以轻松地在单个循环中绘制所有轴
另一种方法是使用axes.flatte()
,其中flatte()
是numpy数组的方法。它不是迭代器,而是返回数组的展开版本:
for i, ax in enumerate(axes.flatten()):
从外面看,两者之间没有区别。但是,迭代器实际上并不创建新数组,因此可能会稍微快一点(尽管在matplotlib axes对象中永远不会注意到这一点)
与单独迭代行和列的幼稚方法相比,迭代Axis数组的展开版本的优点是可以节省一个循环
for row in axes:
for ax in row:
ax.scatter(...)
请补充一些解释。
for i, ax in enumerate(axes.flatten()):
flat1 = [ax for ax in axes.flat]
flat2 = axes.flatten()
print(flat1 == flat2)
> [ True True True True True True]
for row in axes:
for ax in row:
ax.scatter(...)
fig, ax = plt.subplots(3, 3, figsize=())
ax = ax.flatten()
for i, col in enumerate(columns):
sns.distplot(d2[col], ax=ax[i])
plt.tight_layout()