日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python ndarray.strides用法

發布時間:2025/3/21 python 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python ndarray.strides用法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

用法

ndarray.strides: 跨越數組各個維度所需要經過的字節數元組

a = np.array([[10,2,4],[3, 4,11]],dtype=np.int32) print(a.strides) #(12,4) 12表示在內存中a[n, 0]到a[n+1, 0]跨過多少byte; 4表示在內存中a[n, 0]到a[n, 1]跨過多少byte# 查看數組a所有元素占用內存大小,單位byte print(a.nbytes) # 24 # 查看數組a每個元素占用內存大小,單位byte print(a.itemsize) # 4print(a[:,1]) # [2 4] print(a[:,1].strides) # (12,) stride, = a[:,1].strides print(stride) # 12

數組a以24(6個值*4=24)個字節的形式存儲在內存中,一個接一個(又稱為連續內存塊)。數組的步幅告訴我們要沿著某個軸移到下一個位置,我們必須在內存中跳過多少個字節。

解釋:

基礎:

  • 1byte = 8bit
  • 不同數據類型占據的內存大小不同,總的來說一個32位的類型需要4byte,64位的類型需要8byte,可參考下表
    | 數值 \ 數值類型 (單位:Byte) | int32 | int64 | float32 | float64 |
    |–|--|–|--|–|
    | [] | 96 | 96 | 96 | 96 |
    | 1 | 4 | 8 | 4 | 8 |
    表格意思:一個空的數組[]就占用內存96byte,因為它存放了關于數組大小等信息。32位的數組一個元素占用4byte,64的數組,一個元素占用8byte

計算規則:

  • 跨越第1維:從a[x,0]到a[x,1]經過4個字節(1個值)才能移至下一列
  • 跨越第0維:從a[0,x]到a[1,x]的話,需要經過12(3個值x4)個字節才能移至下一行中的相同位置,因為a[0],也就是a的一行有3個數據,占據12個字節
  • 因此數組a的步幅將為(12, 4)

示例

y = np.reshape(np.arange(2*3*4), (2,3,4)) print(y) print(y.strides) # (48, 16, 4)

總結

以上是生活随笔為你收集整理的Python ndarray.strides用法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。