我有各種 3D 陣列,我正在查看沿 X、Y 或 Z 軸的 2D 切片。
為了簡化我的代碼,我想有一個宣告切片的位置,例如
# X View
my_view = [10, :, :]
# Y View
# my_view = [:, 4, :]
# Z View
# my_view = [:, :, 7]
并選擇要在我的腳本中運行的視圖。
然后我的其余代碼可以在可視化時應用 myview 切片,
plt.plot(my_data[myview])
plt.plot(more_data[myview])
沒有辦法“存盤”切片的 ':' 部分。我將如何在 Python/Numpy 中完成此操作?
uj5u.com熱心網友回復:
np.s_ 是制作索引元組的便捷工具:
In [21]: np.s_[10,:,:]
Out[21]: (10, slice(None, None, None), slice(None, None, None))
但你可以直接創建:
In [22]: (10,slice(None),slice(None))
Out[22]: (10, slice(None, None, None), slice(None, None, None))
arr[i,j]與 相同arr[(i,j)],逗號創建一個元組。
In [23]: 10,slice(None),slice(None)
Out[23]: (10, slice(None, None, None), slice(None, None, None))
您可以通過這種方式創建更通用的索引元組。
uj5u.com熱心網友回復:
為什么不做my_view一個函式?
def my_view(arr):
"""Returns a certain 2d slice of a 3d NumPy array."""
# X View
return arr[10, :, :]
# Y View
# return arr[:, 4, :]
# Z View
# return arr[:, :, 7]
應用:
plt.plot(my_view(my_data))
plt.plot(my_view(more_data))
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/376356.html
上一篇:從二維串列制作三維numpy
下一篇:如何重新排序dstack
