Python - 在 z 平面上切片

Python - slicing on the z-plane

我有一个 3d list of lists mylist,其形状是

(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 上切片飞机。怎么做?

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

如果 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[:] returns 是 mylist 的浅表副本——一个与 [= 内容完全相同的新列表12=]。所以 mylistmylist[:][:] 都是列表列表的列表。

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