除了記憶體布局屬性外,用於 python 資料分析的 numpy 庫的 ndarray 物件還具有資料型別屬性和 t 和 real 等其他屬性。
ndarray 的資料型別屬性如下:
描述:
ndarray.dtype 返回 Array 元素的資料型別。
例
>>import numpy as npndarray 的資料型別屬性如下:>arr1=np.array([1,2,3])
>arr1
array([1, 2, 3])
通過 NDArosiondtype 獲取 NDAlus 的資料型別。
>arr1.dtype
dtype('int32')
描述:
ndarray.t 轉置陣列,原始陣列保持不變。
一維陣列在轉置之前和之後是相同的。
對於二維及以上陣列,軸數保持不變,轉置後形狀發生變化。
例
>>import numpy as np描述:ndarray.real 返回陣列的複數資料型別的實數部分。>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.形狀形狀變化,軸尺寸互換。
z=a+bj,z是複數,a是複數的實部,b是複數的虛部。
例
>>import numpy as np描述:ndarray.IMAG 返回陣列複雜資料型別的虛部。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.])
例
>>import numpy as np描述:numpy.ndarray.flat 返回乙個由陣列的所有元素組成的一維迭代器。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.])
與內建的迭代器物件類似,它支援索引和遍歷等操作。
例
>>import numpy as np描述:numpy.ndarray.CTYPES 返回乙個物件,該物件簡化了陣列與 CTYPES 模組的互動。>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.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]])