Numpy 修煉之道 (2)—— N維數組 ndarray

2021-03-02 AI派

推薦閱讀時間:5min~6min

文章內容:Numpy中的N維數組 ndarray

Numpy 中最重要的一個對象就是 ndarray。

ndarray 結構圖


ndarray中的每個元素在內存中使用相同大小的塊。 ndarray中的每個元素是數據類型對象的對象(稱為 dtype)。

從ndarray對象提取的任何元素(通過切片)由一個數組標量類型的 Python 對象表示。 下圖顯示了ndarray,數據類型對象(dtype)和數組標量類型之間的關係。

構建ndarray

打開 Python 終端

>>> import numpy as np
>>> a = np.array([0, 1, 2, 3]) # 1-D
>>> aarray([0, 1, 2, 3])
>>> b = np.array([[0, 1, 2], [3, 4, 5]]) # 2-D, 2 row x 3 col
>>> barray([[0, 1, 2], [3, 4, 5]])

上面的方式是最基本的方法,也是最笨的方法,下面看一些非常「雞賊」的方法。

使用一些跟數值範圍相關的函數來創建。

>>> a = np.arange(10) # 生成 0-5 數組
>>> aarray([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> b = np.arange(1, 6, 2) # 生成開始為 1,結束為 5(6-1),步長為 2 數組
>>> barray([1, 3, 5])


常用的數組

>>> a = np.ones((3, 3)) # reminder: (3, 3) is a tuple
>>> aarray([[ 1., 1., 1.], [ 1., 1., 1.], [ 1., 1., 1.]])
>>> b = np.zeros((2, 2))
>>> barray([[ 0., 0.], [ 0., 0.]])
>>> c = np.eye(3) # 單位矩陣
>>> carray([[ 1., 0., 0.], [ 0., 1., 0.], [ 0., 0., 1.]])
>>> d = np.diag(np.array([1, 2, 3, 4])) # 對角矩陣
>>> darray([[1, 0, 0, 0], [0, 2, 0, 0], [0, 0, 3, 0], [0, 0, 0, 4]])


隨機數組

>>> a = np.random.rand(2, 3)       # uniform in [0, 1]
>>> aarray([[ 0.6713131 ,  0.36077404,  0.13295515],     [ 0.21052194,  0.39054944,  0.24861006]])
>>> b = np.random.randn(2, 3)      # Gaussian
>>> barray([[-1.25166408, -0.61573192, -0.41214682],     [-0.25353635,  1.04938271,  0.02308834]])


nddaray常用屬性


ndarray.flags有關數組的內存布局的信息。ndarray.shape數組維數組。ndarray.strides遍歷數組時,在每個維度中步進的字節數組。ndarray.ndim數組維數,在Python世界中,維度的數量被稱為rank。ndarray.dataPython緩衝區對象指向數組的數據的開始。ndarray.size數組中的元素總個數。ndarray.itemsize一個數組元素的長度(以字節為單位)。ndarray.nbytes數組的元素消耗的總字節數。ndarray.base如果內存是來自某個其他對象的基本對象。ndarray.dtype數組元素的數據類型。ndarray.T數組的轉置。

>>> a = np.array([(2,3,4), (5,6,7)])
>>> a.flags  C_CONTIGUOUS : True  F_CONTIGUOUS : False  OWNDATA : True  WRITEABLE : True  ALIGNED : True  UPDATEIFCOPY : False
>>> a.shape(2L, 3L)
>>> a.ndim
2
>>> a.strides(12L, 4L)
>>> a.data
<read-write buffer for 0x00000000099EA2B0, size 24, offset 0 at 0x0000000009953B20
>>>> a.size
6
>>> a.itemsize
4
>>> a.nbytes
24
>>> a.dtypedtype('int32')
>>> a.Tarray([[2, 5],     [3, 6],     [4, 7]])

作者:1or0,腦洞大開(www.naodongopen.com)籤約編輯,專注於機器學習、量化投資研究。

相關焦點

  • NumPy ndarray數組的創建
    這裡介紹生成 ndarray 的幾種方式,包括:從已有數據中創建數組直接對 Python 的基礎數據類型(如列表、元組等)進行轉換來生成 ndarray:1) 將列錶轉換成 ndarray:import numpy as npls1 = [10, 42, 0, -17, 30]nd1 =np.array
  • NumPy ndarray合併數組
    表1:Num:Py ndarray 數組合併方法函數描述np. append()內存佔用大np.concatenate()沒有內存問題np. stack()沿著新的軸加入一系列數組np.hstack()堆棧數組垂直順序(行)np.vstack()堆棧數組垂直順序(列)np.dstack()堆棧數組按順序深入(沿第3維)np.vsplit()將數組分解成垂直的多個子數組的列表
  • Python數據分析之Numpy學習 2——NumPy 基礎 ndarray對象
    Python數據分析之Numpy學習 2 —— NumPy 基礎學習NumPy(Numerical Python)是高性能科學計算和數據分析的基礎包。NumPy的主要對象是同構數據多維容器(homogeneous multidimensional array)——ndarray,也就是說每一個ndarray都是一個相同類型元素組成的表格(二維)。在NumPy中維度(dimensions)叫做軸(axes),軸的個數叫做秩(rank)。軸這個概念必須牢記,否則放棄吧。首先軸是從0開始計的,0代表最高維,次高維是1,以此類推。
  • NumPy ndarray數組元素的獲取
    生成 ndarray 數組後,如何讀取我們所需要的數據呢?
  • 第 81 天:NumPy Ndarray 對象及數據類型
    ndarray (下文統一稱之為數組)是存儲單一數據類型的多維數組,而 ufunc 則是能夠對數組進行處理的函數。一、NumPy Ndarray 對象NumPy 最重要的一個特點是其 N 維數組對象 ndarray,Ndarray 從名字組成上看是 Nd-array,顧名思義就是 N 維數組的意思,它是一系列多維且同類型數據的集合,以 下標為 0 開始進行集合中元素的索引。
  • 學員筆記||Python數據分析之:numpy入門(一)
    名詞解釋:ndarray是numpy的核心數據類型,即(n-dimensional array)多維數組,tensorflow中的tensor(張量),它本質上也多維數組,但這個名字很高大上。因此,理解多維數組對之後的機器學習會有很大幫助。導入import numpy as np
  • numpy中的ndarray
    軟硬體環境簡介numpy是python中的一個數值計算的開源庫,主要用來存儲和處理多維數組,核心數據結構是ndarray。本文分享ndarray的基本使用, 首先需要安裝numpypip install numpy二維ndarray要構造二維數組(就是矩陣),需要知道數組的行數、列數和每個元素的數據類型,在numpy中,常見的有uint8、int32、float32、float64等等
  • Python Numpy 數組的基本操作示例
    Numpy中的數組是一個元素表(通常是數字),所有元素都是相同的類型,由一個正整數元組索引。在Numpy中,數組的維數稱為數組的秩。一個整數的元組給出了數組在每個維度上的大小,稱為數組的形狀。Numpy中的數組類稱為ndarray。Numpy數組中的元素可以使用方括號訪問,也可以使用嵌套Python列表初始化。Numpy中的數組可以通過多種方式創建,具有不同數量的秩,定義數組的大小。
  • Datawhale十二月Pandas組學習打卡--Task01.預備知識2:NumPy第一部分
    它是一個Python庫,提供多維數組對象,各種派生對象(如掩碼數組和矩陣),以及用於數組快速操作的各種API,有包括數學、邏輯、形狀操作、排序、選擇、輸入輸出、離散傅立葉變換、基本線性代數,基本統計運算和隨機模擬等等。NumPy包的核心是 ndarray 對象。它封裝了python原生的同數據類型的 n 維數組,為了保證其性能優良,其中有許多操作都是代碼在本地進行編譯後執行的。
  • Python數據分析之numpy數組全解析
    1 什麼是numpy2 numpy數組創建2.1 基本方法:np.array()2.2 通用方法:np.ones()、np.zeros()、np.eye()2.3 讀取外部數據3 numpy中數組的數據類型4 numpy中數組的形狀5 索引與切片5.1 按索引取值
  • Python數據分析 | 第四章 Numpy 基礎之ndarray
    4.1 NumPy的ndarray:一種多維數組對象NumPy最重要的一個特點就是其N維數組對象(即ndarray),該對象是一個快速而靈活的大數據集容器。你可以利用這種數組對整塊數據執行一些數學運算,其語法跟標量元素之間的運算一樣。
  • 數據分析打工人常用NumPy 70個高頻操作(上篇)
    目錄1、numpy導入、查看版本2、numpy創建1維數組3、numpy創建布爾型數組4、取出numpy.ndarray中滿足條件的元素5、用新值替換numpy.ndarray中滿足條件的元素(數組本身已被修改)6、用新值替換numpy.ndarray中滿足條件的元素(數組本身不被修改)7
  • Python數據分析之NumPy數值計算
    NumPy 是一個運行速度非常快的數學庫,主要用於數組計算,包含:•一個強大的N維數組對象 ndarray•廣播功能函數•整合 C/C++/Fortran 代碼的工具•線性代數、傅立葉變換、隨機數生成等功能NumPy 數組對象 ndarray數組對象 ndarray簡介NumPy 最重要的一個特點是其
  • 數據分析入門 | numpy基礎:數組和矢量計算
    ——《利用Python進行數據分析》Numpy的ndarray:一種多維數組對象       Numpy最重要的一個特點就是其N維數組對象(即ndarray),該對象是一個快速而靈活的大數據集容器。可以利用這種數組對整塊數據執行一些數學運算,其語法跟標量元素之間的運算一樣。
  • Python之numpy數組學習(一)
    Numpy中的多維數組稱為ndarray,它有兩個組成部分。在數組的處理過程中,原始數據不受影響,變化的只是元數據。Numpy數組通常是由相同種類的元素組成,即數組中數據類型必須一致。好處是:數組元素類型相同,可輕鬆確定存儲數組所需的空間大小。同時,numpy可運用向量化運算來處理整個數組。Numpy數組的索引從0開始。
  • NumPy數組的屬性和常用創建方法
    2、ndarray屬性通過一個例子來看下numpy ndarray的屬性:#juzicode.com,VX:桔子codeimport numpy as npa = np.arange(6).reshape(2,3)print('a=\n',a)print('a.ndim=',a.ndim) #
  • python數據分析專題 (9):numpy基礎
    NumPy最重要的一個特點就是其N維數組對象(即ndarray),該對象是一個快速而靈活的大數據集容器。新手可能不理解這句話的含義,這個需要慢慢去理解 。總之,知道numpy是python數據分析最重要的基礎包就可以了。有了numpy才可以利用這種數組對整塊數據執行一些數學運算,比python自帶的數組以及元組效率更高,其語法跟變量元素之間的運算一樣,無需進行循環操作。
  • NumPy的數組對象
    NumPy的主要操作對象是同類型的多維數組,數組中的所有元素類型都是相同的,數組對象名是ndarray,別名是array。1、使用NumPy的array函數創建數組使用NumPy的array函數可以創建1維、2維、……、n維數組,array函數要求傳入Python列表數據,傳入Python列表數據的嵌套層次決定了創建數組的維數。下面給出了創建1維和2維數組的案例,更多維數組的創建與2維數組的創建類同。
  • 機器學習必備Python庫之Numpy基礎學習
    關於numpy的學習內容如下:數組簡介和數組的構造數組取值和賦值數學運算broadcasting邏輯運算<class 'numpy.ndarray'>  #ndarray : n dimensional array n維數組取a的第一個元素print(a[0])1創建一個二維的數組b=np.array
  • 最全的NumPy教程
    基本的ndarray是使用 NumPy 中的數組函數創建的,如下所示:numpy.array它從任何暴露數組接口的對象,或從返回數組的任何方法創建一個ndarray。如前所述,ndarray對象中的元素遵循基於零的索引。有三種可用的索引方法類型:欄位訪問,基本切片和高級索引。基本切片是 Python 中基本切片概念到 n 維的擴展。通過將start,stop和step參數提供給內置的slice函數來構造一個 Python slice對象。