Python - 在z平面上切片

时间:2016-12-31 13:13:01

标签: python matplotlib multidimensional-array imshow

我有一个列表mylist的3d列表,其形状为

(30, 30, 580)

我想在z平面上对其进行切片,例如在z=100处。

我试过以下

plt.imshow(mylist[:][:][100],origin='lower', aspect='auto')
plt.show()

产生错误

index 100 is out of bounds for axis 0 with size 30

据我了解,似乎imshow只能处理xy平面,但无法在z平面上切片。怎么做?

2 个答案:

答案 0 :(得分:1)

假设mylist是一个numpy数组,请尝试mylist[:, :, 100]

答案 1 :(得分:1)

如果mylist是列表列表,您可以使用

沿第三轴切片
[[mylist[i][j][100] for j in range(30)] for i in range(30)]

但是,由于您使用的是matplotlib,因此您还必须安装NumPy。所以 将mylist转换为NumPy数组然后使用NumPy索引会更容易:

myarrary = np.array(mylist)
plt.imshow(myarray[..., 100], origin='lower', aspect='auto')

mylist[:][:][100]不起作用的原因是mylist[:]返回mylist的浅表副本 - 一个与mylist具有完全相同内容的新列表。因此,mylistmylist[:][:]都是列表列表。

mylist[:][:][100]失败的原因与mylist[100]失败的原因相同 - mylist的顶级内容只有30个项目。