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

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

了解 Numpy rot90 軸

了解 Numpy rot90 軸

小怪獸愛吃肉 2023-08-22 18:03:05
Numpy 的 rot90 函數(shù)承諾將 2d 或更高的數(shù)組旋轉(zhuǎn) 90 度,采用 axis 參數(shù)。方法:numpy.rot90(m, k=1, axes=(0, 1))[source] Rotate an array by 90 degrees in the plane specified by axes.  Rotation direction is from the first towards the second axis.我對軸部分很困惑。對象可以繞 x、y 或 z 軸旋轉(zhuǎn)。通常,這是由諸如 Vector3f 之類的東西定義的,其中 3 個浮點數(shù)定義軸值(例如,(0, 0, 1) 繞 z 軸旋轉(zhuǎn)。)我不明白如何使用這兩個數(shù)字來旋轉(zhuǎn)3d 對象,不應(yīng)該像 Vector3f 一樣是 3 嗎?誰能幫我理解這兩個軸的含義,以及分別用于繞 x、y 和 z 軸旋轉(zhuǎn)的兩個數(shù)字嗎?我嘗試了許多不同的數(shù)字組合,它們都有不同的結(jié)果(我不能輸入兩個相同的數(shù)字),但我不知道如何用兩個數(shù)字獲得足夠的信息(k代表次數(shù))旋轉(zhuǎn)。)
查看完整描述

1 回答

?
阿波羅的戰(zhàn)車

TA貢獻1862條經(jīng)驗 獲得超6個贊

我喜歡使用具有不同值和維度的示例數(shù)組,例如np.arange(24).reshape(2,3,4).


在這種情況下,我也查看了代碼。經(jīng)過一些準備工作以確保axes和k正確后,它會根據(jù) 的 4 個可能值執(zhí)行不同的操作k。


axes定義一個“平面”。對于 3d 陣列,axes=(0,1)可以將其視為繞第三軸 (2) 的旋轉(zhuǎn),想象一個垂直于該“平面”的“矢量”。但代碼中使用的是這些軸值。雖然我懷疑我們可以使用基于三角的旋轉(zhuǎn)矩陣構(gòu)造等效運算,但此代碼不執(zhí)行任何計算。(請注意,整數(shù)不會更改為浮點數(shù)。)


k=0沒有改變?nèi)魏蝺?nèi)容:


In [104]: np.rot90(m,k=0, axes=(0,1))

Out[104]: 

array([[[ 0,  1,  2,  3],         # shape (2,3,4)

        [ 4,  5,  6,  7],

        [ 8,  9, 10, 11]],


       [[12, 13, 14, 15],

        [16, 17, 18, 19],

        [20, 21, 22, 23]]])

k=1涉及翻轉(zhuǎn)和轉(zhuǎn)置


In [105]: np.rot90(m,k=1, axes=(0,1))

Out[105]: 

array([[[ 8,  9, 10, 11],           # shape (3,2,4)

        [20, 21, 22, 23]],


       [[ 4,  5,  6,  7],

        [16, 17, 18, 19]],


       [[ 0,  1,  2,  3],

        [12, 13, 14, 15]]])

k=2更簡單——只需在兩個軸上翻轉(zhuǎn)即可。這很容易想象。最后一個維度不變(跨行),但平面和行相反:


In [106]: np.rot90(m,k=2, axes=(0,1))

Out[106]: 

array([[[20, 21, 22, 23],

        [16, 17, 18, 19],

        [12, 13, 14, 15]],


       [[ 8,  9, 10, 11],

        [ 4,  5,  6,  7],

        [ 0,  1,  2,  3]]])

k=3先進行翻轉(zhuǎn),然后進行轉(zhuǎn)置


In [107]: np.rot90(m,k=3, axes=(0,1))

Out[107]: 

array([[[12, 13, 14, 15],         # again (3,2,4)

        [ 0,  1,  2,  3]],


       [[16, 17, 18, 19],

        [ 4,  5,  6,  7]],


       [[20, 21, 22, 23],

        [ 8,  9, 10, 11]]])

看看步伐:


In [111]: m.strides

Out[111]: (96, 32, 8)

In [112]: np.rot90(m,k=2, axes=(0,1)).strides

Out[112]: (-96, -32, 8)                # the double flip

轉(zhuǎn)置會改變順序,而翻轉(zhuǎn)會再次改變符號:


In [113]: np.rot90(m,k=1, axes=(0,1)).strides

Out[113]: (-32, 96, 8)

In [114]: np.rot90(m,k=3, axes=(0,1)).strides

Out[114]: (32, -96, 8)

因為它只是使用flip并且transpose結(jié)果是view.


更簡單的 (1,3,4) 數(shù)組

在表示一個平面中的值的數(shù)組((3,4) 數(shù)組)中進行可視化可能更容易:


In [120]: m = np.arange(12).reshape(1,3,4)

In [121]: m

Out[121]: 

array([[[ 0,  1,  2,  3],

        [ 4,  5,  6,  7],

        [ 8,  9, 10, 11]]])

In [122]: np.rot90(m,k=2, axes=(1,2))

Out[122]: 

array([[[11, 10,  9,  8],

        [ 7,  6,  5,  4],

        [ 3,  2,  1,  0]]])

In [123]: np.rot90(m,k=1, axes=(1,2))  # visualize a counterclockwise rotation

Out[123]: 

array([[[ 3,  7, 11],

        [ 2,  6, 10],

        [ 1,  5,  9],

        [ 0,  4,  8]]])

In [124]: np.rot90(m,k=3, axes=(1,2))    # clockwise

Out[124]: 

array([[[ 8,  4,  0],

        [ 9,  5,  1],

        [10,  6,  2],

        [11,  7,  3]]])

k=3也可以看作是通過 1 和 2 連續(xù)逆時針旋轉(zhuǎn)。


查看完整回答
反對 回復 2023-08-22
  • 1 回答
  • 0 關(guān)注
  • 257 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號