我有一个列表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
只能处理x
和y
平面,但无法在z
平面上切片。怎么做?
答案 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
具有完全相同内容的新列表。因此,mylist
和mylist[:][:]
都是列表列表。
mylist[:][:][100]
失败的原因与mylist[100]
失败的原因相同 - mylist
的顶级内容只有30个项目。