Python之numpy數組學習(一)

2021-03-02 CDA數據分析師

作者  Airy
本文轉自AiryData,轉載需授權

前面已經安裝並學習了Python中的科學計算庫,今天主要學習下numpy數組。

Numpy中的多維數組稱為ndarray,它有兩個組成部分。

在數組的處理過程中,原始數據不受影響,變化的只是元數據。

Numpy數組通常是由相同種類的元素組成,即數組中數據類型必須一致。好處是:數組元素類型相同,可輕鬆確定存儲數組所需的空間大小。同時,numpy可運用向量化運算來處理整個數組。Numpy數組的索引從0開始。(這裡我使用的是ipython命令行,ipython最近剛開始用,以後詳細介紹下。)

In [3]: import numpy as np

In [4]: a = np.arange(5)

In [5]: a.dtype

Out[5]: dtype('int32')

上面數組的數據類型為int32,這一般跟你安裝的Python版本有關。不過我安裝的是64位,不知道怎麼回事這裡是int32,後面再檢查下。

上一篇我們說了向量(一維的numpy數組)的創建方法,下面看一下上面生成的向量。

In [6]: a

Out[6]: array([0, 1, 2, 3, 4])

In [7]: a.shape

Out[7]: (5,)

可以看到,該向量有5個元素,該數組的shape屬性是一個元組,存放的是數組在每一個維度的長度。

我們已經知道了如何創建向量,下面開始建立多維numpy數組,生成矩陣後,再看它的形狀。

In [8]: m = np.array([np.arange(2),np.arange(2)])

In [9]: m

Out[9]:

array([[0, 1],

      [0, 1]])

上面我們用arrange方法創建了一個簡單的2*2的數組,利用array()函數創建數組時,需要傳遞給它一個對象,並且這個對象必須是數組類型。如Python的列表。

創建之後,我們要選擇矩陣的元素,這裡就相當於一個二維坐標系,我們只要找到對應的坐標即可。

In [10]: m[0,0]

Out[10]: 0

In [11]: m[0,1]

Out[11]: 1

In [12]: m[1,0]

Out[12]: 0

In [13]: m[1,1]

Out[13]: 1

可以看到,選擇數組元素很簡單,對於數組m,只要通過m[m,n]的形式,就能訪問數組內的元素,其中m和n為數組元素的下標,從0開始。

Python本身支持整型、浮點型和複數型,為了科學計算,numpy提供了更加豐富的數據類型,注意:numpy跟數學運算有關的數據類型的名稱都以數字結尾。這個數字指示了該類型的變量所佔用的二進位位數。Numpy的各種數值類型如下圖所示:

每一種數據類型都有相應的轉換函數,許多函數都帶有一個指定數據類型的參數,該參數一般可選。

In [15]: np.float64(30)

Out[15]: 30.0

In [16]: np.bool(30)

Out[16]: True

In [17]: np.float(True)

Out[17]: 1.0

In [18]: np.int8(30)

Out[18]: 30

In [20]: np.arange(7, dtype='uint16')

Out[20]: array([0, 1, 2, 3, 4, 5, 6],dtype=uint16)

注意:不允許把複數轉化成整型。也不允許把複數轉化為浮點數,但是允許把浮點數轉化為複數。複數的實部和虛部分別使用real()函數和imag()函數提取。

數據類型對象是numpy.dtype類的實例。數組是一種數據類型。數據類型對象表明了數據佔用的字節數,所佔用字節的具體數目一般存放在類dtype的itemsize中。

In [6]: import numpy as np

In [7]: a = np.arange(5)

In [8]: a

Out[8]: array([0, 1, 2, 3, 4])

In [9]: a.dtype.itemsize

Out[9]: 4

一維numpy數組的切片操作和Python列表的切片一樣,看一下下面的例子來體驗一下。

In [34]: a = np.arange(9)

In [35]: a

Out[35]: array([0, 1, 2, 3, 4, 5, 6, 7, 8])

#通過下標取數據

In [36]: a[3:7]

Out[36]: array([3, 4, 5, 6])

#用下標選擇元素,範圍0到7,下標每次遞增2

In [37]: a[:7:2]

Out[37]: array([0, 2, 4, 6])

#反轉數組

In [38]: a[::-1]

Out[38]: array([8, 7, 6, 5, 4, 3, 2, 1, 0])

今天學習一下Python中numpy的簡單使用。希望通過上面的操作能幫助大家。如果你有什麼好的意見,建議,或者有不同的看法,我都希望你留言和我們進行交流、討論。

推薦閱讀

【書單】18本數據科學家必讀的R語言和Python相關書籍

如何像數據科學家一樣思考

北京VS上海,哪座城市人口更多?

我是如何一不小心阻止了勒索病毒的全球蔓延

用python抓取摩拜單車API數據並做可視化分析(源碼)

2017年大數據和數據科學的六大發展趨勢

你每天要花多少時間在手機上?

初級數據科學家求職時的 3 大必備能力

不可錯過的優質深度學習課程

職場 | 資料庫面試常問的一些基本概念

聽說你最擅長「拖」,你「拖」得過Excel嗎?

數據科學優質課程推薦#2:統計入門課程篇

歌手外科和猴姑,大數據告訴你白百何出軌後誰最慘

想學習數據科學?我們整理了一份優質編程入門課程清單

數據科學家在美國仍然是最熱門工作的3大原因

一個優秀數據分析師的準則

Python 實現一個火車票查詢的工具

乾貨 | 攜程實時用戶行為系統實踐

數據分析證明最靠譜的電影評分網站不是 IMDB, 也不是爛番茄,而是...

那些年,寫 Python 犯過的錯誤

相關焦點

  • Python之numpy數組學習(三)
    作者  Airy本文轉自AiryData,轉載需授權前面我們學習了numpy庫的簡單應用和數組的處理,今天來學習下比較重要的如何拆分數組。itemsize屬性可以返回數組中各個元素所佔用的字節數。nbytes屬性存儲整個數組所需的字節數量。這個屬性的值正好是itemsize和size屬性值的積。T屬性的作用和transpose()函數相同。如果數組的秩(rank)小於2,那麼所得只是一個數組的視圖。對於numpy來說,複數用j表示。
  • Python之numpy數組學習(四)——索引和視圖
    作者   Airy本文轉自 AiryData,轉載需授權前面我們學習了numpy庫的簡單應用和數組的處理,今天來學習下數組的視圖和索引。在學習ravel()函數的時候,我看到了視圖的概念,這讓我很驚訝,但是注意,這裡的視圖和資料庫中的視圖不是一樣的。在numpy中,視圖不是只讀的。關鍵在於,當前處理的是共享的數組視圖,還是數組數據的副本。舉例來說,可以取數組的一部分來生成視圖,這意味著,如果先將數組的某部分賦值給一個變量,然後修改原數組中相應位置的數據,那麼這個變量的值也會隨之變化。
  • Python使用ctypes模塊調用DLL函數之C語言數組與numpy數組傳遞
    python使用ctypes模塊調用DLL函數之傳遞數值、指針與字符串參數、一般情況下,DLL函數中傳遞C語言類型的數組,在接收到Python語言中時,通常將其轉換為numpy庫裡面的數組類型,這樣做的好處是可以藉助於numpy強大的分析處理功能對數據直接作後續處理。這次通過例子演示下C語言數組到numpy數組之間是怎樣傳遞的。
  • Python學習第113課——numpy中用條件判斷去篩選數組中的元素
    【每天幾分鐘,從零入門python編程的世界!】之前我們學習了如何在numpy中查找數組元素的方法和技巧,現在我們學習如何用條件判斷的方式篩選數組的元素。●numpy中的數組可以直接進行比較直接上代碼:運行結果:我們看到,condition列印出來,它的結構和h的結構一樣。
  • Python學習第112課——numpy中數組查找元素和改變元素的小技巧
    【每天幾分鐘,從零入門python編程的世界!】上節我們學習了如何利用index找到ndarray數組中的一些元素,並把找到的元素生成一個新的ndarray。代碼如下:現在我們學習幾個用index找到ndarray中元素的小技巧。
  • 學員筆記||Python數據分析之:numpy入門(一)
    numpy最主要的是支持矩陣操作與運算非常高效是numpy的優勢,core為C編寫。提升了python的處理效率numpy是一些與比較流行的機器學習框架的基礎。 名詞解釋:ndarray是numpy的核心數據類型,即(n-dimensional array)多維數組,tensorflow中的tensor(張量),它本質上也多維數組,但這個名字很高大上。因此,理解多維數組對之後的機器學習會有很大幫助。導入import numpy as np
  • Python學習第114課——numpy中ndarray的四則運算
    【每天幾分鐘,從零入門python編程的世界!】我們為什麼要學習numpy?numpy其實就是number+Python的簡寫,意思就是通過Python對數據進行處理。這節我們學習numpy中數組的一些基本的四則運算。●numpy中數組的加法運算我們首先生成x和y兩個float類型的數組,然後把它們進行相加。
  • Python之numpy零基礎入門(一)
    當創建好一個ndarray數組時,同時會在內存中儲存它的shape(維度大小)和dtype(數據類型)import numpy as npa=[1,2,3,4,5,6]arr=np.array(a)print(arr)print(arr.shape)print(arr.dtype)
  • Python學習第119課——numpy中的broadcasting
    【每天幾分鐘,從零入門python編程的世界!】這節課我們學習numpy中的數據的一個多變的特性--broadcasting,broadcasting的官方的說明比較麻煩,我們這裡把它簡化一下,就把它當做「腦補」的意思。
  • 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 使用簡介
    source: https://realpython.com/numpy-tutorial/#hello-numpy-curving-test-grades-tutorial聲明:本篇推送的主要內容翻譯自:https://realpython.com/numpy-tutorial/#hello-numpy-curving-test-grades-tutorial
  • Python乾貨 | 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函數
    NumPy 是一個基礎數學包,以其高效的多維數組函數而聞名,適用於線性代數,傅立葉變換,邏輯運算等。本文從 NumPy 最基礎的知識切入,包括 NumPy 裡面的函數,如何創建 NumPy 數組,數組的索引、切片等,非常適合初學者。
  • Python數據分析之numpy學習(一)
    這裡向大家推薦兩本書《Python數據分析》和《利用Python進行數據分析》,而這兩本書也是目前我正在學習的材料,雖然這兩本書都是基於Python2.x,但對於Python3.x也能正常運行。本期將會涉及到Python模塊中的numpy,這是一個處理數組的強大模塊,而該模塊也是其他數據分析模塊(如pandas和scipy)的核心。
  • 好程式設計師Python培訓分享numpy簡介
    好程式設計師Python培訓分享numpy簡介:一、numpy簡介:NumPy是一個功能強大的Python庫,主要用於對多維數組執行計算。NumPy這個詞來源於兩個單詞-- Numerical和Python。NumPy提供了大量的庫函數和操作,可以幫助程式設計師輕鬆地進行數值計算。
  • Python學習第117課——numpy中dot的運用舉例
    【每天幾分鐘,從零入門python編程的世界!】上節我們學習了最基礎的matrix的運算,可能有小夥伴覺得這都要涉及高等數學知識了,確實如果你想做數據科學、做人工智慧,統計學、概率論等數學知識,尤其是算法是繞不過去的坎,但是不要怕!!!
  • Python之numpy數組學習2
    #-*- coding:utf-8 -*-#stacking.pyimport numpy as np#創建數組a = np.arange(9).reshape(3,3)print(a)#Out: #array([[0, 1, 2],#       [3, 4, 5],#       [6, 7,
  • Python之numpy數組學習(二)
    #-*- coding:utf-8 -*-#stacking.pyimport numpy as np#創建數組a = np.arange(9).reshape(3,3)print(a)#Out: #array([[0, 1, 2],#       [3, 4, 5],#       [6, 7,
  • Python Numpy學習教程(一)Python篇
    Author:     Justin JohnsonInterpreter:AmusiDate:   2018-03-24Reference:[1]:http://cs231n.github.io/python-numpy-tutorial/ [2]:https://github.com/kuleshov/cs228
  • Python數據分析基礎之NumPy學習 (上)
    (下)數組計算之 NumPy (上)數組計算之 NumPy (下)科學計算之 SciPy數據結構之 Pandas基本可視化之 Matplotlib統計可視化之 Seaborn交互可視化之 Bokeh炫酷可視化之 PyEcharts