天天看點

Python數學庫初探-資料分析和機器學習架構底層工具NumPy建立數組

作者:RPA自動化

如下帶你走進 @ 機器人時代

Discover 點選上面藍色文字,關注我們

Python數學庫初探-資料分析和機器學習架構底層工具NumPy建立數組

NumPy是Python的第三方庫,是一個由多元數組對象(ndarray)和處理這些數組的函數(function)集合組成的庫。

它的優點歸納起來有以下幾點:

1、NumPy 是 Python 科學計算基礎庫;

2、NumPy 可以對數組進行高效的數學運算;

3、NumPy 的 ndarray 對象可以用來建構多元數組;

4、NumPy 能夠執行傅立葉變換與重塑多元數組形狀;

5、NumPy 提供了線性代數,以及随機數生成的内置函數。

NumPy 通常與 Pandas、SciPy(Python科學計算庫)和 Matplotlib(Python繪圖庫)等軟體包組合使用。

通過NumPy内置的array()就可以建立ndarray對象,文法格式如下:

numpy.array(數組系列, dtype = 資料類型, copy = 能否複制, order = 記憶體布局,ndmin = 數組次元)

我們先來嘗試建立一個一維數組:

import numpy as np
# 建立數組
a=np.array([1,2,3])
print(a)
print(type(a))
運作結果:
[1 2 3]
<class 'numpy.ndarray'>           

如果我們要建立一個二維數組:

b=np.array([[4,5,6],[7,8,9]])
print(b)
運作結果:
[[4 5 6]
 [7 8 9]]           

如果我們想修改資料類型,可以增加下面這個參數:

import numpy as np
b=np.array([[4,5,6],[7,8,9]])
s=np.array(b,dtype='complex')
print(s)
輸出結果:
[[4.+0.j 5.+0.j 6.+0.j]
 [7.+0.j 8.+0.j 9.+0.j]]           

我們知道,Python裡有list類型,它可以存儲不同類型的資料,但NumPy中的array需要一緻的資料類型友善運算,而且運算速度比list快很多,占用的記憶體比較小,這也是NumPy大受歡迎的原因,通過下面的例子我們來了解一下:

# 比較運算速度
import numpy as np
a = np.array(range(1000000))
b = list(range(1000000))
from datetime import datetime#導入一個時間庫
dt1 = datetime.now()
for _ in range(10): a1 = a*100
dt2 = datetime.now()
print(dt2-dt1)
dt1 = datetime.now()
for _ in range(10): b1 = b*100
dt2 = datetime.now()
print(dt2-dt1)

運作結果:
0:00:00.011968
0:00:06.809830           

執行這樣的運算,NumPy比list足足快了接近600倍!大家可以複制代碼自己測試一下。

如果我們想檢視數組的次元,可以使用下面方法:

a = np.array([[1, 2, 3, 4], [4, 5, 6, 7], [9, 10, 11, 23]])
print(a.ndim)
輸出結果:
2           

我們也可以用ndmin參數來指定次元:

# 指定次元建立數組
a = np.array([1, 2, 3, 4, 5], ndmin=2)
print(a)
輸出結果:
[[1 2 3 4 5]]           

建立數組的方法還有:

print(np.zeros(8)) #建立全是0的數組
print(np.ones(8)) #建立全是1的數組
print(np.empty(2)) #建立空的數組(随機)
print(np.arange(8)) #用range建立
print(np.arange(1,8,2)) #指定間隔
print(np.linspace(0, 10, num=5)) #建立等分數組
輸出結果:
[0. 0. 0. 0. 0. 0. 0. 0.]
[1. 1. 1. 1. 1. 1. 1. 1.]
[-7.85170823e-297  2.66299064e-306]
[0 1 2 3 4 5 6 7]
[1 3 5 7]
[ 0.   2.5  5.   7.5 10. ]           

把list轉換為數組:np.array(list)等方法:

#轉換方式建立數組
a=[1,2,3,4] #清單
print(np.array(a))
b=(1,2,3,4) #元組
print(np.array(a)) #方法1
print(np.asarray(b)) #方法2
c=[(1,2,3,4),(5,6,7,8)]
print(np.asarray(c,dtype=int))
s =  b'Hello World'
#buffer 是字元串的時候,Python3 預設 str 是 Unicode 類型
# 是以要轉成 bytestring 在原 str 前加上 b。
a = np.frombuffer(s, dtype =  'S1')
print (a)
# 使用疊代器建立 ndarray
x = np.fromiter(iter(range(5)), dtype=float)
print(x)
#建立等比數列
a = np.logspace(1.0,  2.0, num =  8)
print (a)

輸出結果:
[1 2 3 4]
[1 2 3 4]
[1 2 3 4]
[[1 2 3 4]
 [5 6 7 8]]
[b'H' b'e' b'l' b'l' b'o' b' ' b'W' b'o' b'r' b'l' b'd']
[0. 1. 2. 3. 4.]
[ 10.          13.89495494  19.30697729  26.82695795  37.2759372
  51.79474679  71.9685673  100.        ]           

數組的建立方法大概方法就介紹到這裡,下期我們學習numpy數組的一些操作方法,謝謝關注。

堅持學習,這樣每天都能進步一點點!

往期回顧:

  • 來來來,送你一個金牌銷售機器人,7X24小時不休,不要工資免費用!
  • RPA技術在旅行社銷售業務中如何鳳凰涅槃??
  • 【工資翻三倍】系列:一招搞定九宮圖檔切割機器人,讓你的朋友圈更加炫酷!

本文引用和摘錄相關内容,請聯系侵删。

- END -

最後,文章有幫助到你的話【點贊在看】

激勵我們分享更多的幹貨!