迭代Numpy数组并使用元素方法

时间:2014-01-14 22:44:39

标签: python numpy matplotlib

在尝试做一些small multiple时,我想用Matplotlib制作一堆子图,并向每个子图中输入不同的数据。 pyplot.subplots()给了我一个Figure和Numpy数组Axes,但是在尝试迭代轴时,我很难理解如何实现它们。

我正在尝试类似的事情:

import numpy as np
import matplotlib.pyplot as plt
f, axs = plt.subplots(2,2)
for ax in np.nditer(axs, flags=['refs_ok']):
    ax.plot([1,2],[3,4])

但是,每次迭代中ax的类型不是Axes,而是ndarray,因此尝试绘图失败的原因为:

AttributeError: 'numpy.ndarray' object has no attribute 'plot'

如何循环我的轴?

2 个答案:

答案 0 :(得分:3)

你可以更简单地做到这一点:

for ax in axs.ravel():
    ax.plot(...)

答案 1 :(得分:0)

Numpy数组有.flat attribute返回1-D迭代器:

for ax in axs.flat:
    ax.plot(...)

另一个选择是将数组重塑为单个维度:

for ax in np.reshape(axs, -1):
    ax.plot(...)