Python數據分析之Numpy學習 2——NumPy 基礎 ndarray對象

2021-01-10 韭菜學院

Python數據分析之Numpy學習 2 —— NumPy 基礎學習

NumPy(Numerical Python)是高性能科學計算和數據分析的基礎包。NumPy的主要對象是同構數據多維容器(homogeneous multidimensional array)——ndarray,也就是說每一個ndarray都是一個相同類型元素組成的表格(二維)。在NumPy中維度(dimensions)叫做軸(axes),軸的個數叫做秩(rank)。軸這個概念必須牢記,否則放棄吧。首先軸是從0開始計的,0代表最高維,次高維是1,以此類推。

約定:

import numpy as np

ndarray對象的常用屬性

創建ndarray

函數說明

np.array(data,dtype=None, order=None)

將數據data(列表、元組、數組或其他序列類型)轉換為ndarray。要麼推斷出dtype,要麼顯示指定dtype。默認直接複製數據。order默認是A(可能是C可能是F還可能是其它)

np.asarray(data, dtype=None, order=None)

將輸入數據轉換為ndarray,data同上還可以是ndarray,如果是ndarray就不進行複製。dtype同上,order是重塑中行優先C還是列優先F,默認C語言風格。

np.arange(10,30,5,dtype=None)

開始,結束,步長和內置的range相同

np.ones( (2,3,4), dtype=None) 、np.ones_like(a)

根據指定的形狀和dtype創建一個全1的數組。ones_like以另一個數組為參數,創建形狀和dtype相同的全1數組。

np.zeros() 、np.zeros_like()

全0數組,類似ones和ones_like。

np.empty() 、np.empty_like()

創建數組,只分配內存空間但不填充任何值,所以返回的是垃圾值。類似ones和ones_like。

np.eye(N, M=None, k=0, dtype=) 、np.identity(n, dtype=None)

eye創建的是N*M的數組,默認M=N,k取整數,正數對角線向上移k,負數對角線向下移k。identity創建一個N*N單位矩陣(對角線為1,其餘全0)的數組

示例 array

numpy.array(object, dtype=None, copy=True, order=None, subok=False, ndmin=0)

import numpy as npa = np.array([1,2,3]) print a

輸出如下:

[1, 2, 3]

# 多於一個維度 import numpy as npa = np.array([[1, 2], [3, 4]]) print a

輸出如下:

[[1, 2][3, 4]]

# dtype 參數 import numpy as npa = np.array([1, 2, 3], dtype = complex) print a

輸出如下:

[ 1.+0.j, 2.+0.j, 3.+0.j]

索引,切片和迭代

一維數組可以被索引、切片和迭代,就像列表和其它Python序列。

>>> a = arange(10)**3>>> aarray([ 0, 1, 8, 27, 64, 125, 216, 343, 512, 729])>>> a[2]8>>> a[2:5]array([ 8, 27, 64])>>> a[:6:2] = -1000 # equivalent to a[0:6:2] = -1000; from start to position 6, exclusive, set every 2nd element to -1000>>> aarray([-1000, 1, -1000, 27, -1000, 125, 216, 343, 512, 729])>>> a[ : :-1] # reversed aarray([ 729, 512, 343, 216, 125, -1000, 27, -1000, 1, -1000])>>> for i in a:... print i**(1/3.),...nan 1.0 nan 3.0 nan 5.0 6.0 7.0 8.0 9.0

多維數組可以每個軸有一個索引。這些索引由一個逗號分隔的元組給出。

>>> def f(x,y):... return 10*x+y...>>> b = fromfunction(f,(5,4),dtype=int)>>> barray([[ 0, 1, 2, 3], [10, 11, 12, 13], [20, 21, 22, 23], [30, 31, 32, 33], [40, 41, 42, 43]])>>> b[2,3]23>>> b[0:5, 1] # each row in the second column of barray([ 1, 11, 21, 31, 41])>>> b[ : ,1] # equivalent to the previous examplearray([ 1, 11, 21, 31, 41])>>> b[1:3, : ] # each column in the second and third row of barray([[10, 11, 12, 13], [20, 21, 22, 23]])

組合(stack)不同的數組

幾種方法可以沿不同軸將數組堆疊在一起:

>>> a = floor(10*random.random((2,2)))>>> aarray([[ 1., 1.], [ 5., 8.]])>>> b = floor(10*random.random((2,2)))>>> barray([[ 3., 3.], [ 6., 0.]])>>> vstack((a,b))array([[ 1., 1.], [ 5., 8.], [ 3., 3.], [ 6., 0.]])>>> hstack((a,b))array([[ 1., 1., 3., 3.], [ 5., 8., 6., 0.]])

函數

column_stack

以列將一維數組合成二維數組,它等同與

vstack

對一維數組。

>>> column_stack((a,b)) # With 2D arraysarray([[ 1., 1., 3., 3.], [ 5., 8., 6., 0.]])>>> a=array([4.,2.])>>> b=array([2.,8.])>>> a[:,newaxis] # This allows to have a 2D columns vectorarray([[ 4.], [ 2.]])>>> column_stack((a[:,newaxis],b[:,newaxis]))array([[ 4., 2.], [ 2., 8.]])>>> vstack((a[:,newaxis],b[:,newaxis])) # The behavior of vstack is differentarray([[ 4.], [ 2.], [ 2.], [ 8.]])

row_stack

函數,另一方面,將一維數組以行組合成二維數組。

對那些維度比二維更高的數組,

hstack

沿著第二個軸組合,

vstack

沿著第一個軸組合,

concatenate

允許可選參數給出組合時沿著的軸。

函數和方法(method)總覽

這是個NumPy函數和方法分類排列目錄。這些名字連結到NumPy示例,你可以看到這些函數起作用。[^5]

創建數組

arange, array, copy, empty, empty_like, eye, fromfile, fromfunction, identity, linspace, logspace, mgrid, ogrid, ones, ones_like, r , zeros, zeros_like

轉化

astype, atleast 1d, atleast 2d, atleast 3d, mat

操作

array split, column stack, concatenate, diagonal, dsplit, dstack, hsplit, hstack, item, newaxis, ravel, repeat, reshape, resize, squeeze, swapaxes, take, transpose, vsplit, vstack

詢問

all, any, nonzero, where

排序

argmax, argmin, argsort, max, min, ptp, searchsorted, sort

運算

choose, compress, cumprod, cumsum, inner, fill, imag, prod, put, putmask, real, sum

基本統計

cov, mean, std, var

基本線性代數

cross, dot, outer, svd, vdot

相關焦點

  • Python數據分析類庫系列-Numpy之多維數組ndarray
    Numpy的多維數組 -- ndarray NumPy最重要的一個特點就是其N維數組對象(即ndarray),該對象是一個快速而靈活的大數據集容器。 要明白Python是如何利用與標量值類似的語法進行批次計算,我先引入NumPy,然後生成一個包含隨機數據的小數組: import numpy as np data = np.random.randn(2,3)data out:
  • 數據分析-numpy庫快速了解
    1.numpy是什麼庫NumPy是一個開源的Python科學計算基礎庫,包含: 一個強大的N維數組對象 ndarray 廣播功能函數 整合C/C++/Fortran代碼的工具 線性代數、傅立葉變換、隨機數生成等功能
  • numpy庫學習總結(基礎知識)
    最近在學習Python中OpenCV庫,學習花了很多時間,發現基礎知識很重要,尤其是numpy這個庫,在進行程序開發時,處理大量類似數組這種數據結構時,它的重要性等同於Python中的列表,像前篇我們寫的《使用Python中OpenCV庫創建一幅圖片的RGB通道圖片》中,對於圖片的處理,大部分時間我們是在跟類似數組這種數據結構在打交道
  • NumPy ndarray數組的創建
    下面將介紹Numpy的一些常用方法,尤其是與機器學習、深度學習相關的一些內容。NumPy 封裝了一個新的數據類型 ndarray(N-dimensional Array),它是一個多維數組對象。該對象封裝了許多常用的數學運算函數,方便我們做數據處理、數據分析等。那麼,如何生成 ndarray 呢?
  • Python數據分析之numpy學習(一)
    在學完《廖雪峰Python2.7教程》感覺受益匪淺,掌握了基本的語法之後開始接觸用Python進行數據分析。這裡向大家推薦兩本書《Python數據分析》和《利用Python進行數據分析》,而這兩本書也是目前我正在學習的材料,雖然這兩本書都是基於Python2.x,但對於Python3.x也能正常運行。
  • 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 按索引取值
  • Numpy基礎:創建ndarray及數據類型
    一起學習,一起成長1.創建ndarray創建數組最簡單的辦法就是使用array函數。它接受一切序列型的對象(包括其他數組),然後產生一個新的含有傳入數據的Numpy數組。np.zeros(10)np.ones((3,6))np.empty((2,3,2))arange是python內置函數range的數組版。
  • python數據分析基礎之numpy
    支持高級大量的維度數組與矩陣運算,是學習數據挖掘的基礎,今天我們就來總結下numpy的一些基礎用法。首先,在講numpy之前,我先帶領大家預習下大學學習過的矩陣的基礎知識。1、矩陣的基本概念矩陣:由m×n個數排列成 的m行n列的數表,稱為m行n列矩陣。實矩陣:元素是實數的矩陣。復矩陣:元素是負數的矩陣。
  • 如果不懂Numpy,請別說自己是Python程式設計師
    幸運的是,後來我遇到了 numpy 這個神器。numpy 是 python 科學計算的基礎軟體包,提供多了維數組對象,多種派生對象(掩碼數組、矩陣等)以及用於快速操作數組的函數及 API,它包括數學、邏輯、數組形狀變換、排序、選擇、I/O 、離散傅立葉變換、基本線性代數、基本統計運算、隨機模擬等等。
  • 不懂NumPy 算什麼 Python 程式設計師?|CSDN 博文精選
    事實上,NumPy 的數據組織結構,尤其是數組(numpy.ndarray),幾乎已經成為所有數據處理與可視化模塊的標準數據結構了(這一點,類似於在機器學習領域 Python 幾乎已經成為首選工具語言)。
  • 如何把小豬佩奇放到多維空間裡(深入理解numpy中的ndarray對象)
    在使用numpy對ndarray對象進行處理時,我們動輒就會碰到大於二維的數據。這時候,很多小朋友肯定會犯難,如何理解這些數據?怎麼才能在腦海裡把這些數據跟我們的現實生活聯繫起來進行理解呢?今天,我帶大家通過一個實例來深入理解一下這個數據結構。【問 題】我們手頭有一棟新樓房(樓房沒有門牌號),裡面住著n個小豬佩奇。
  • Numpy的ndarray:一種多維數組對象
    前言Numpy最重要的一個特點就是其N維數組對象(即ndarray),該對象是一個快速而靈活的大數據集容器。可以利用這種數組對整塊數據執行一些數學運算。模塊導入方式如下:import numpy as npndarray是一個通用的同構數據多維容器,也就是說,其中的所有元素必須是相同類型的。
  • 大數據分析Python NumPy庫使用教程
    NumPy 是一個運行速度非常快的數學庫,主要用於數組計算,包含: 1)一個強大的N維數組對象 ndarray 2)廣播功能函數 3)整合 C/C++/Fortran 代碼的工具 4)線性代數、傅立葉變換、隨機數生成等功能
  • Numpy基礎,一位Python大神的筆記,看了後我連Matlab都學會了!
    如果你有Matlab基礎,那麼你能很快看懂本文!(私信小編007即可獲取Python視頻教程以及各類PDF!)一個慄子創建矩陣對於Python中的numpy模塊,一般用其提供的ndarray對象。 創建一個ndarray對象很簡單,只要將一個list作為參數即可。例如:
  • Python學習第114課——numpy中ndarray的四則運算
    【每天幾分鐘,從零入門python編程的世界!】我們為什麼要學習numpy?numpy其實就是number+Python的簡寫,意思就是通過Python對數據進行處理。要對數據進行處理,就少不了最基本的加減乘除等操作。
  • Python:一篇文章掌握Numpy的基本用法
    前言Numpy是一個開源的Python科學計算庫,它是python科學計算庫的基礎庫,許多其他著名的科學計算庫如Pandas,Scikit-learn等都要用到Numpy庫的一些功能。本文主要內容如下:Numpy數組對象創建ndarray數組Numpy的數值類型ndarray數組的屬性ndarray數組的切片和索引處理數組形狀數組的類型轉換numpy常用統計函數數組的廣播1 Numpy數組對象Numpy中的多維數組稱為ndarray
  • 資源|用Python和NumPy學習《深度學習》中的線性代數基礎
    本文系巴黎高等師範學院在讀博士 Hadrien Jean 的一篇基礎學習博客,其目的是幫助初學者/高級初學者基於深度學習和機器學習來掌握線性代數的概念。掌握這些技能可以提高你理解和應用各種數據科學算法的能力。
  • Python NumPy用法介紹
    介紹NumPy是Python數值計算最重要的基礎包,大多數提供科學計算的包都是用NumPy的數組作為構建基礎。NumPy本身並沒有提供多麼高級的數據分析功能,理解NumPy數組以及面向數組的計算,將有助於你更加高效地使用諸如Pandas之類的工具。
  • python數據科學系列:numpy入門詳細教程
    python數據科學基礎庫主要是三劍客:numpy,pandas以及matplotlib,每個庫都集成了大量的方法接口,配合使用功能強大。numpy:numerical python縮寫,提供了底層基於C語言實現的數值計算庫,與python內置的list和array數據結構相比,其支持更加規範的數據類型和極其豐富的操作接口,速度也更快num
  • numpy中的數據類型對象有哪些
    Numpy數據類型numpy是一個python擴展包,它可以為我們提供更精確的科學技術,更強大的數學能力。為此,numpy定義了比python更豐富的數據類型來達成目的。數據類型以上就是一系列Numpy中提供的數據類型。需要理解的是,Numpy中的數據類型,和python本身的數據類型是不同的。Numpy中的數據類型,實質是數據類型對象dtype的實例。