从更大列表中的列表中的数组中的元素创建坐标

时间:2014-02-07 18:38:21

标签: python-2.7 matplotlib

我有一个列表Beam_points,它是3个元素数组的列表列表(例如Beam_points[2] = [array([1,2,3]), array([2,3,4])])。每个阵列列表都是光束中给定光线的点列表。我试图以下列方式绘制每个光束路径的z与y坐标:

def plot(self):
    z_coords, y_coords = [], []
    for list in self.Beam_points:
        z, y = [], []
        for i in list:
            z.append(i[2]), y.append(i[1])
        z_coords.append(z), y_coords.append(y)      
    for z,y in zip(z_coords, y_coords):
            plt.plot(z, y, color = "Blue")
    plt.title('Beam Path')
    plt.xlabel('z')
    plt.ylabel('y')
    plt.show()

虽然必须有更高效/ pythonic的方式吗?绘图需要相当长的时间。

感谢。

1 个答案:

答案 0 :(得分:1)

您可以使用numpy的更多功能,并且只使用一个循环来绘制:

def plot(self):
    ultra_beam_point = np.array(self.Beam_points)
    for z,y in ultra_beam_point[:,:,1:]:
        plt.plot(z, y, color = "Blue")
    plt.title('Beam Path')
    plt.xlabel('z')
    plt.ylabel('y')
    plt.show()