Numpy的ndarray:一種多維數組對象

2021-01-11 素食先生lpt

前言

Numpy最重要的一個特點就是其N維數組對象(即ndarray),該對象是一個快速而靈活的大數據集容器。可以利用這種數組對整塊數據執行一些數學運算。模塊導入方式如下:

import numpy as np

ndarray是一個通用的同構數據多維容器,也就是說,其中的所有元素必須是相同類型的。每個數組都有一個shape(一個表示各維度大小的元組)和一個dtype(一個用於說明數組數據類型的對象)。

#查看元組各維度大小

In[9]:data.shape

Out[9]: (2, 3)

#查看數組數據類型的對象

In[10]:data.dtype

Out[10]: dtype('float64')

創建ndarray

創建數組最簡單的辦法就是使用array函數。它接受一切序列型的對象(包括其他數組),然後產生一個新的含有傳入數據的Numpy數組。

np.array會嘗試為新建的這個數組推斷出一個較為合適的數據類型。數據類型保存在一個特殊的dtype對象中。

ndarray的數據類型

dtype(數據類型)是一個特殊的對象,它含有ndarray將一塊內存解釋為特定數據類型所需的信息:

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

arr1.dtype

Out[12]: dtype('float64')

使用astype函數轉換dtype

使用「對象.astype()」。

float_arr=arr.astype(np.float64)

#如果將浮點數轉換成整數,則小數部分將會被截斷。

注意小數點不是四捨五入,而是直接幹掉。

#如果某字符串數組表示的全是數字,也可以用astype將其轉換為數值形式。

數組的dtype還有另外一個用法。【參見P87】

int_array.astype(calibers.dtype)

calibers是數組對象。

數組和標量之間的運算

數組很重要,因為它使你不用編寫循環即可對數據執行批量運算。這通常就叫做矢量化(vectorization)。

#大小相等的數組之間的任何算術運算都會將運算應用到元素級。比如,對象級的乘法(arr*arr)、減法(arr-arr)。

#不同大小的數組之間的運算叫做廣播(broadcasting)。(第12章進行介紹)

基本的索引和切片

Numpy數組的索引是一個內容豐富的主題,因為選取數據子集或單個元素的方式有很多。當你將一個標量值賦值給一個切片時(如arr[5:8]=12),該值會自動傳播到整個選取。跟列表最重要的區別在於,數組切片是原始數據的視圖。

遞歸訪問

可以傳入一個以逗號隔開的索引列表來選取單個元素。下面兩種方式是等價的:

In[26]: arr2d[0][2]

Out[26]: 3

#以逗號隔開,進行遞歸索引

In[27]: arr2d[0,2]

Out[27]: 3

切片索引

一維對象很簡單。

高維度對象的花樣更多,可以在一個或多個軸上進行切片,也可以跟整數索引混合使用。

可以看出,它是沿著第0軸(即第一個軸)切片的。也就是說,切片是沿著一個軸向選取元素的。可以一次傳入多個切片,就像傳入多個索引那樣。

通過將整數索引和切片混合,可以得到低維度的切片。

只有「冒號」表示選取整個軸,因此可以像下面這樣對高維軸進行切片。

布爾型索引

In[59]:data[names=='Bob']

Out[59]:

array([[ 1.33294395, -1.81762768, -0.85209052, 0.1009952 ],

[ 1.98143939, -0.17456857, 0.35297145, -0.53826328]])

布爾型數組的長度必須跟被索引的軸長度一致。此外,還可以將布爾型數組跟切片、整數(或整數序列)混合使用:

In[60]:data[names=='Bob',2:]

Out[60]:

array([[-0.85209052, 0.1009952 ],

[ 0.35297145, -0.53826328]])

相關焦點

  • NumPy ndarray數組的創建
    NumPy 封裝了一個新的數據類型 ndarray(N-dimensional Array),它是一個多維數組對象。該對象封裝了許多常用的數學運算函數,方便我們做數據處理、數據分析等。那麼,如何生成 ndarray 呢?
  • Python數據分析類庫系列-Numpy之多維數組ndarray
    NumPy之於數值計算特別重要的原因之一,是因為它可以高效處理大數組的數據。 這是因為: NumPy是在一個連續的內存塊中存儲數據,獨立於其他Python內置對象。NumPy的C語言編寫的算法庫可以操作內存,而不必進行類型檢查或其它前期工作。
  • NumPy ndarray數組元素的獲取
    生成 ndarray 數組後,如何讀取我們所需要的數據呢?
  • Python數據分析之Numpy學習 2——NumPy 基礎 ndarray對象
    NumPy的主要對象是同構數據多維容器(homogeneous multidimensional array)——ndarray,也就是說每一個ndarray都是一個相同類型元素組成的表格(二維)。在NumPy中維度(dimensions)叫做軸(axes),軸的個數叫做秩(rank)。軸這個概念必須牢記,否則放棄吧。首先軸是從0開始計的,0代表最高維,次高維是1,以此類推。
  • NumPy的數組對象
    NumPy的主要操作對象是同類型的多維數組,數組中的所有元素類型都是相同的,數組對象名是ndarray,別名是array。一、創建數組可以有多種方式創建NumPy數組:(1)使用NumPy的array函數從Python列表中創建數組,數組類型由列表中的數據類型確定;(2)使用NumPy的zeros函數創建數組元素全部為0的數組,默認情況下數組元素的類型為float64;(3)使用NumPy的ones函數創建數組元素全部為1的數組,默認情況下數組元素的類型為float64;(4)使用NumPy
  • 如何把小豬佩奇放到多維空間裡(深入理解numpy中的ndarray對象)
    在使用numpy對ndarray對象進行處理時,我們動輒就會碰到大於二維的數據。這時候,很多小朋友肯定會犯難,如何理解這些數據?怎麼才能在腦海裡把這些數據跟我們的現實生活聯繫起來進行理解呢?今天,我帶大家通過一個實例來深入理解一下這個數據結構。【問 題】我們手頭有一棟新樓房(樓房沒有門牌號),裡面住著n個小豬佩奇。
  • NumPy中的ndarray與Pandas的Series和DataFrame之間的區別與轉換
    在數據分析中,經常涉及numpy中的ndarray對象與pandas的Series和DataFrame對象之間的轉換,讓一些開發者產生了困惑。本文將簡單介紹這三種數據類型,並以金融市場數據為例,給出相關對象之間轉換的具體示例。
  • 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 按索引取值
  • D01 Numpy簡介,為什麼Numpy那麼快
    title: D01|Numpy簡介author: Adolph Leecategories: 數據挖掘基礎tags:Python數據挖掘基礎Numpy初識NumpyNumpy是一個Python基礎科學計算包,它的核心是多維數組ndarray對象,Numpy
  • numpy庫學習總結(基礎知識)
    安裝成功後,我們在Python編譯器中進行測試,使用import numpy,如果不報錯,說明我們的numpy安裝無誤了。【numpy庫基本使用】Numpy中定義的最重要使用最頻繁的對象就是ndarray的N維數組類型。它描述相同類型(dtype)的元素集合,可以使用基於零的索引訪問集合中的項目,它的類似Python中的列表索引。
  • D02 Numpy常用函數,如何優雅的遍歷一個多維數組?
    當我們想要遍歷一個多維數組的時候,如果通過不停的使用循環去遍歷,這會讓我們的代碼可讀性與性能都變得很差,numpy提供了一個函數nditer,以幫助我們遍歷數組。nditer的入參是一個數組,返回值是一個可迭代對象。nditer 默認會優先遍歷行序,通過order參數可以使其優先遍歷列序。
  • Python中NumPy簡介及使用舉例
    NumPy中定義的最重要的對象是稱為ndarray的N維數組類型。它描述相同類型的元素集合,可以使用基於零的索引訪問集合中元素。基本的ndarray是使用NumPy中的數組函數創建的: numpy.array。NumPy支持比Python更多種類的數值類型。NumPy數值是dtype(數據類型)對象的實例,每個對象具有唯一的特徵。
  • 數據分析-numpy庫快速了解
    1.numpy是什麼庫NumPy是一個開源的Python科學計算基礎庫,包含: 一個強大的N維數組對象 ndarray 廣播功能函數 整合C/C++/Fortran代碼的工具 線性代數、傅立葉變換、隨機數生成等功能
  • Numpy基礎:創建ndarray及數據類型
    一起學習,一起成長1.創建ndarray創建數組最簡單的辦法就是使用array函數。它接受一切序列型的對象(包括其他數組),然後產生一個新的含有傳入數據的Numpy數組。np.array會嘗試為新建的這個數組推斷出一個較為合適的數據類型。數據類型保存在一個特殊的dtype對象中。其他一些可以新建數組的函數。比如zeros和ones分別可以創建指定長度或形狀的全0或全1數組。empty可以創建一個沒有任何具體值的數組。
  • Python NumPy用法介紹
    使用下面格式約定,引入NumPy包:import numpy as npNumPy的ndarray:N維數組對象NumPy最重要的是其N維數組對象(即ndarray),其中的所有元素必須是相同類型的。該對象是一個快速而靈活的大數據集容器,可以利用這種數組對整塊數據執行數學運算,其語法跟標量元素之間的運算一樣。創建ndarray使用np.array(list/tuple, dtype=np.float32)函數,產生一個新的含有傳入數據的ndarray對象。
  • NumPy基礎教程,帶你玩轉多維數組
    ([[1,2,3],[4,5,6]])>>> b.size6ndarray.dtype:顯示數組元素的類型。Python 中的標準 type 函數同樣可以用於顯示數組類型,NumPy 有它自己的類型如:numpy.int32, numpy.int16, 和 numpy.float64,其中「int」和「float」代表數據的種類是整數還是浮點數,「32」和「16」代表這個數組的字節數(存儲大小)。ndarray.itemsize:數組中每個元素的字節存儲大小。
  • Python學習第112課——numpy中數組查找元素和改變元素的小技巧
    上節我們學習了如何利用index找到ndarray數組中的一些元素,並把找到的元素生成一個新的ndarray。代碼如下:現在我們學習幾個用index找到ndarray中元素的小技巧。★技巧3:運行結果:說明:●arange()函數語法:np.arange([start,]stop,[step,]dtype=None)作用:生成在numpy中創建等差數組。參數:start是起始值,可以不寫,不寫默認從0開始。
  • 不懂NumPy 算什麼 Python 程式設計師?|CSDN 博文精選
    NumPy 是 Python 科學計算的基礎軟體包,提供多維數組對象,多種派生對象(掩碼數組、矩陣等)以及用於快速操作數組的函數及 API,它包括數學、邏輯、數組形狀變換、排序、選擇、I/O 、離散傅立葉變換、基本線性代數、基本統計運算、隨機模擬等等。
  • Numpy高級操作大全!!!
    NumPy 包含一個迭代器對象numpy.nditer。它是一個有效的多維迭代器對象,可以用於在數組上進行迭代。數組的每個元素可使用 Python 的標準Iterator接口來訪問。0510152025303540455055如果兩個數組是可廣播的,nditer組合對象能夠同時迭代它們。
  • D03 Numpy排序、篩選、統計
    在生活中最為常見的數據存放形式是二維表,我們將二維表數據轉換為ndarray之後對應的即為二維數組,下面以二維數組為例,講述numpy的排序、篩選、統計。排序關於排序,numpy的開發者們一早就為我們準備好了方法函數供我們使用,並且提供了多種不同的排序算法例如最常用的quicksort以及穩定性最強的mergesort。