2016-12-31 35 views
1

切片我列出mylist的3D列表,其形狀Python的 - 在z平面

(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飛機上切片。怎麼做?

回答

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個項目。

1

假設mylist是一個numpy數組,請嘗試mylist[:, :, 100]