Numpy 基於 ndarray 的其他屬性

Mondo 遊戲 更新 2024-02-14

除了記憶體布局屬性外,用於 python 資料分析的 numpy 庫的 ndarray 物件還具有資料型別屬性和 t 和 real 等其他屬性。

ndarray 的資料型別屬性如下:

描述:

ndarray.dtype 返回 Array 元素的資料型別。

>>import numpy as np

>arr1=np.array([1,2,3])

>arr1

array([1, 2, 3])

通過 NDArosiondtype 獲取 NDAlus 的資料型別。

>arr1.dtype

dtype('int32')

ndarray 的資料型別屬性如下:

描述:

ndarray.t 轉置陣列,原始陣列保持不變。

一維陣列在轉置之前和之後是相同的。

對於二維及以上陣列,軸數保持不變,轉置後形狀發生變化。

>>import numpy as np

>ar1=np.array([1,2,3])

>ar1

array([1, 2, 3])

t 轉置陣列以生成乙個新陣列,並且原始陣列保持不變。

一維陣列在轉置之前和之後是相同的。

>ar1.t

array([1, 2, 3])

>ar2=np.array([[1,2,3],[5,6,7]])

>ar2

array([[1, 2, 3],[5, 6, 7]])

二維陣列,轉置後,軸數不變,形狀不變。

>ar2t=ar2.t

>ar2t

array([[1, 5],[2, 6],[3, 7]])

>ar2.ndim

>ar2.shape

>ar2t.NDIM 軸的數量保持不變。

>ar2t.形狀形狀變化,軸尺寸互換。

>ar3=np.array([[1,2,3],[5,6,7]]]

>ar3

array([[1, 2, 3],[5, 6, 7]]]

三維陣列,轉置後,軸數不變,形狀變化。

>ar3t=ar3.t

>ar3t

array([[1],[5]],2],[6]],3],[7]]]

>ar3.ndim

>ar3.shape

>ar3t.NDIM 軸的數量保持不變。

>ar3t.形狀形狀變化,軸尺寸互換。

描述:ndarray.real 返回陣列的複數資料型別的實數部分。

z=a+bj,z是複數,a是複數的實部,b是複數的虛部。

>>import numpy as np

z=a+bj,z是複數,a是複數的實部,b是複數的虛部。

>ar1=np.array([1+2j,3+5j])

>ar1

array([1.+2.j, 3.+5.j])

real 返回複數的實數部分。

>ar1.real

array([1., 3.])

描述:ndarray.IMAG 返回陣列複雜資料型別的虛部。

>>import numpy as np

z=a+bj,z是複數,a是複數的實部,b是複數的虛部。

>ar1=np.array([1+2j,3+5j])

>ar1

array([1.+2.j, 3.+5.j])

imag 返回複數的虛部。

>ar1.imag

array([2., 5.])

描述:numpy.ndarray.flat 返回乙個由陣列的所有元素組成的一維迭代器。

與內建的迭代器物件類似,它支援索引和遍歷等操作。

>>import numpy as np

>ar1=np.array([[1,2,3],[4,5,6]])

>ar1

array([[1, 2, 3],[4, 5, 6]])

# numpy.ndarray.flat 返回乙個由陣列的所有元素組成的一維迭代器。

>ar1_flat=ar1.flat

>from collections.abc import iterable

flat 返回可迭代物件。

>isinstance(ar1_flat,iterable)

true 遍歷 flat 返回的迭代器。

>i for i in ar1_flat]

支援索引操作。

>ar1_flat[2]

獲取長度。

>len(ar1_flat)

轉換為列表

>list(ar1_flat)

>ar1_t=ar1.t

>ar1_t_flat=ar1_t.flat

>ar1_t

array([[1, 4],[2, 5],[3, 6]])

>i for i in ar1_t_flat]

描述:numpy.ndarray.CTYPES 返回乙個物件,該物件簡化了陣列與 CTYPES 模組的互動。

numpy.ndarray.ctypes.data 返回陣列的記憶體位址。

numpy.ndarray.ctypes.data as 返回乙個資料指標,該指標指向對陣列的引用。

ctypes.c_uint32*ar1.size).from_address(numpy.ndarray.ctypes.data) 建立與 NDAluS 位址相同的陣列。

>>import numpy as np

>import ctypes as ct

>ar1=np.array([[11,12,13],[15,16,18]])

>ar1

array([[11, 12, 13],[15, 16, 18]])

>ar1.dtype

dtype('int32')

# numpy.ndarray.CTYPES 返回乙個物件,該物件簡化了陣列與 CTYPES 模組的互動。

>ar1_ctypes=ar1.ctypes

data 返回指向陣列記憶體區域的指標,該指標是乙個整數。

>cdata=ar1_ctypes.data

>ar1_ctypes

>cdata

data as 返回乙個資料指標,該指標指向對陣列的引用。

>cdata32=ar1_ctypes.data_as(ct.pointer(ct.c_uint32))

>cdata32

_main__.lp_c_ulong object at 0x000001fbfff26440>

將資料作為資料進行遍歷。

>cdata32[i] for i in range(ar1.size)]

建立乙個陣列 b,共享 numpyndarray.ctype.資料位址

AR1 CTYPES 與 B 相互作用。

>b=(ct.c_uint32*ar1.size).from_address(cdata)

>b

_main__.c_ulong_array_6 object at 0x000001fbffecee40>

>b[:]

修改 ar1 的第乙個元素。

>ar1[0][0]

>ar1[0][0]=21

>ar1[0][0]

>ar1

array([[21, 12, 13],[15, 16, 18]])

b 元素也被修改,因為它指向相同的位址

>b[:]

修改 b 的元素。

>b[1]=22

>b[:]

>ar1

array([[21, 22, 13],[15, 16, 18]])

相關問題答案

    Numpy 基於 ndarray 記憶體布局屬性

    ndarray 屬性反映了陣列本身的資訊,可以通過訪問該屬性來訪問或設定陣列的內部資訊。ndarray 屬性包括記憶體布局屬性 資料型別屬性和其他屬性。ndarray 的記憶體布局屬性如下 描述 ndarray.flags 獲取 ndarray 物件的記憶體資訊,包括以下屬性 例 import nu...

    淺談書法基礎系列的章節

    書法基礎系列 我已經講過握筆 動筆 打結字的方法,接下來我們再講書法的布局。這樣一來,系列作品就形成了清晰的脈絡,也方便初學者翻閱查詢。書法是指在整個書法作品中,把字與字 線與線 方與面的關係進行排列和安排,並加以照顧的方法。即全部作品的 布白 法,又稱 大章法 習慣上稱點畫排列為乙個詞,乙個字的排...

    武術套路和槍械是以基本動作教授的

    作為武術器械中常見的武器之一,槍 歷來被譽為 兵器之王 在冷兵器時代,則被稱為 一寸長,一寸強 槍法種類繁多,其中流傳最廣的槍法是 楊家槍 月家槍 珞珈槍 高家槍等槍法,但最基本的動作是停槍 拿槍 刺槍。要想練好槍法,牢牢掌握基本動作是關鍵,下面就和大家分享槍法中擋槍 持槍 刺槍基本動作的要領。.擋...

    《易經八卦》根基的十二個地支

    十二個地支是我國古老的傳統年表,也是萬物的起源。個地支,即農曆個,起源於古代每月的祭祀活動,地支是古代人們用來描述月亮週期的十二個連續符號。在中華大地上,十二個地支文化的繁榮發展是值得驕傲的,也給我們的生活帶來了不少便利。現在讓我們談談地上的個分支。地上樹枝的 樹枝 就像一棵樹的樹枝,位於 地 下面...

    《基本書法系列》“雍子八法”詳解

    在學習書法的過程中,雍子的八種方法就是基礎。毋庸置疑,書法的重要性就在這裡建立起來。雍子八律的歷史和起源 自三國鐘玄創立小開法以來,到晉代,王羲之開創了新一代書法,從此,各類書法在書法 技法上,不斷規範 完善。鐘玄的正文只是在初期,到了隋朝,志永經過多年的努力,終於創作出了著名的 雍子八法 成為後世...