第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在任意軸上迭代體積的更 Pythonic 方式?

在任意軸上迭代體積的更 Pythonic 方式?

繁星淼淼 2022-06-07 16:31:22
我有一個函數,它接受一個 3D numpy 數組(我們將其稱為卷),并將其轉換為 2D 切片列表。我希望用戶能夠指定對其進行切片的軸。我用下面的代碼管理這個,但是三重 if 語句似乎不是最優(yōu)雅的方法。我會感謝人們對是否可以以更好的方式實現這一點的想法。axis = 0 # Can be set to 0, 1, or 2 volume = np.ones((100, 100, 100))n_slices = volume.shape[axis]slices = []for i in range(n_slices):    if axis == 0:        my_slice = volume[i, :, :]    elif axis == 1:        my_slice = volume[:, i, :]    elif axis == 2:        my_slice = volume[:, :, i]    slices.append(my_slice)
查看完整描述

3 回答

?
慕工程0101907

TA貢獻1887條經驗 獲得超5個贊

只需使用np.moveaxis-

slices_ar = np.moveaxis(volume,axis,0)

最好的部分是它是一個輸入視圖,因此在運行時幾乎是免費的。讓我們驗證view-part-

In [83]: np.shares_memory(volume, np.moveaxis(volume,axis,0))
Out[83]: True

或者,使用np.rollaxis它做同樣的事情 -

np.rollaxis(volume,axis,0)


查看完整回答
反對 回復 2022-06-07
?
斯蒂芬大帝

TA貢獻1827條經驗 獲得超8個贊

我猜你想要的是 [numpy.split()]:( https://docs.scipy.org/doc/numpy/reference/generated/numpy.split.html )


axis = 0 # Can be set to 0, 1, or 2 

volume = np.ones((100, 100, 100))

n_slices = volume.shape[axis]


slices = np.split(volume, n_slices, axis)


查看完整回答
反對 回復 2022-06-07
?
慕無忌1623718

TA貢獻1744條經驗 獲得超4個贊

你可以使用

my_slice = volume[tuple(i if n == axis else slice(100) for n in range(3))]

以便

slices = [volume[tuple(i if n == axis else slice(100) for n in range(3))] for i in range(100)]



查看完整回答
反對 回復 2022-06-07
  • 3 回答
  • 0 關注
  • 139 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號