日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

numpy.lib.stride_tricks.as_strided() 高效切分数组

發(fā)布時間:2025/3/21 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 numpy.lib.stride_tricks.as_strided() 高效切分数组 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

numpy.lib.stride_tricks.as_strided(x, shape=None, strides=None, subok=False, writeable=True)

參數(shù):

  • x: 我們要分割的數(shù)組
  • shape: 返回結果的形狀shape
  • strides: 在數(shù)組X的基礎上按照給的的strides來切割出給定的shape數(shù)組

返回: 返回在X的基礎上按照給的的 strides來切割出一個給定shape的新數(shù)組

X = [ [0,1,2], [3,4,5], [6,7,8] ]A = [[[[0,1],[3,4]],[[1,2],[4,5]]],[[[3,4],[6,7]],[[4,5],[7,8]]]]

如上:將矩陣X轉換為包含4個小矩陣的A,矩陣X的shape為(3,3), 矩陣A的shape為(2,2,2,2)

A = as_strided(X, shape=(2,2,2,2), strides)

這時候設置的strides并不是結果A的strides(32,16,8,4), strides的理解是在矩陣X的基礎上按照給的的strides,來切割出一個符合給定shape的新數(shù)組。

計算strides

  • 第3維度:A[i, j, k, x]到A[i, j, k, x+1]在X中跨過4byte
    例如:從A[0,0,0,0]的值0到A[0,0,0,1]的值1,在X中經(jīng)過1個元素(4byte)
  • 第2維度:A[i, j, k, x]到A[i, j, k+1, x]在X中跨過12byte
    例如:從A[0,0,0,0]的值0到A[0,0,1,0]的值3,在X中經(jīng)過3個元素(12byte)
  • 第1維度:A[i, j, k, x]到A[i, j+1, k, x]在X中跨過4byte
    例如:從A[0,0,0,0]的值0到A[0,1,0,0]的值1,在X中經(jīng)過1個元素(4byte)
  • 第0維度:A[i, j, k, x]到A[i+1, j, k, x]在X中跨過12byte
    例如:從A[0,0,0,0]的值0到A[1,0,0,0]的值3,在X中經(jīng)過3個元素(12byte)
  • 因此strides=(12,4,12,4)

運行代碼

X = np.arange(9, dtype=np.int32).reshape(3,3) print(X) A = np.lib.stride_tricks.as_strided(X, shape=(2,2,2,2), strides=(12,4,12,4)) print(A)

運行結果

總結

以上是生活随笔為你收集整理的numpy.lib.stride_tricks.as_strided() 高效切分数组的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。