【Python資料科學】之Numpy
1. Numpy介紹和執行速度的比較
Numpy是Python的一個庫,提供了Python高效能的陣列與矩陣運算處理的能力。本身是將Python的運算,放到了C語言上運算。
import numpy as np
def squares(values):
result = []
for v in values:
result.append(v * v)
return result
#use Python
to_square = range(10000)
%timeit squares(to_square)
#Answer: 2.57 ms ± 537 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
#use Numpy
array_to_square = np.arange(0 , 10000)
%timeit array_to_square ** 2
#Answer: 16.7 µs ± 1.02 µs per loop (mean ± std. dev. of 7 runs, 100000 loops each)
1毫秒是1000微秒,很明顯的看出,在利用Numpy下的資料執行速度很快。
2.ndarray介紹
ndarray是Numpy中用來表示陣列用的。
注意最後的的地方,np.size(x2 , 0)代表輸出行 , 而np.size(x2 , 1)代表輸出列.
import Numpy as np
x = np.array([1 , 2 , 3 , 4 , 5])
print(type(x))#元素型別
print(x.ndim) #維度
print(x.shape) #形狀:(5列) , 先說列再說行,往後頂
print(x.size) #元素個數
print(x.itemsize) #儲存位元組個數
print(x.data)#檢視元素的儲存位置
y = np.array([[1 , 2 , 3 , 4 , 5] , [6 , 7 , 8 , 9 , 10] , [11 , 12 , 13 , 14 , 15]]) #形狀:(3行 , 5列)
print(y.ndim)
print(y.shape)
print(y.size)
print(y.itemsize)
print(y.data)
x2 = np.arange(0 , 12).reshape(4 , 3)
print(x2)
print(np.size(x2 , 0))#輸出行
print(np.size(x2 , 1))#輸出列
3.Boolean Selection 布林選擇器
布林選擇器是用來對資料進行切片處理的,包括了Slice,Reshape等操作。其實就是對於陣列的一個基本的操作。
print(x)
mask = x < 3
print(mask)
print(x[mask])
print(np.sum)
'''
[1 2 3 4 5]
[ True True False False False]
[1 2]
<function sum at 0x000001D6C15DAB70>
'''
a1 = np.arange(9).reshape(3 , 3)
a2 = np.arange(9 , 0 , -1).reshape(3 , 3)
print(a1)
print(a2)
print(a1 < a2)
'''
[[0 1 2]
[3 4 5]
[6 7 8]]
[[9 8 7]
[6 5 4]
[3 2 1]]
[[ True True True]
[ True True False]
[False False False]]
'''
y = np.arange(9).reshape(3 , 3)
reshaped = y.reshape(np.size(y))
reveled = y.ravel()
f = y.flatten()
print(y)
print(reshaped)#[0 1 2 3 4 5 6 7 8]
print(reveled)#[0 1 2 3 4 5 6 7 8]
print(f)#[0 1 2 3 4 5 6 7 8]
4.合併
ndarray陣列支援向量化的運算。
1.注意hstack傳入的資料是元組。
#Combination
a = np.arange(9).reshape(3 , 3)
b = (a + 1) * 10
b
'''
array([[10, 20, 30],
[40, 50, 60],
[70, 80, 90]])
'''
np.hstack((a , b))#水平合併
np.concatenate((a , b) , axis = 1)#水平合併
'''
array([[ 0, 1, 2, 10, 20, 30],
[ 3, 4, 5, 40, 50, 60],
[ 6, 7, 8, 70, 80, 90]])
'''
np.vstack((a , b))#豎直合併
np.concatenate((a , b) , axis = 0)#豎直合併
'''
Out[27]:
array([[ 0, 1, 2],
[ 3, 4, 5],
[ 6, 7, 8],
[10, 20, 30],
[40, 50, 60],
[70, 80, 90]])
'''
相關文章
- Python 資料科學之 PandasPython資料科學
- 資深專家分享:從numpy開啟Python資料科學之旅!Python資料科學
- Python資料分析之numpyPython
- Python科學計算之Numpy陣列生成與運算Python陣列
- Python資料科學(三) python與資料科學應用(Ⅲ)Python資料科學
- Python資料科學(二) python與資料科學應用(Ⅱ)Python資料科學
- Python資料科學(一) python與資料科學應用(Ⅰ)Python資料科學
- [python][科學計算][numpy]使用指南Python
- Python科學計算 - Numpy快速入門Python
- Python之numpy學習Python
- Python資料分析與展示之『Numpy』Python
- Python科學計算庫NumPy基礎操作Python
- Python資料科學(七) 資料清理(Ⅱ)Python資料科學
- Python資料科學(六) 資料清理(Ⅰ)Python資料科學
- Python 資料科學入門Python資料科學
- Python資料分析 – numpyPython
- Python資料分析 - NumpyPython
- Python資料科學(四) 資料收集系列Python資料科學
- NumPy之:資料型別資料型別
- 用 Python 入門資料科學Python資料科學
- 讓科學重回資料科學資料科學
- Python資料分析之糗事百科Python
- 資料科學資料科學
- 人的資料科學與機器資料科學資料科學
- Python資料分析 numpy 筆記Python筆記
- 深入對比資料科學工具箱:Python和R之爭資料科學Python
- Python資料科學(八)- 資料探索與資料視覺化Python資料科學視覺化
- Python資料科學(五) 資料處理和資料採集Python資料科學
- 重學python【numpy】Python
- NumPy之:資料型別物件dtype資料型別物件
- NumPy之:使用genfromtxt匯入資料
- python應用資料科學的優勢Python資料科學
- 10大Python資料科學原始碼教程Python資料科學原始碼
- python綜合學習四之Numpy和Pandas(下)Python
- Python學習之Pandas和Numpy的區別!Python
- 什麼是NumPy?Python中NumPy資料型別有哪些?Python資料型別
- python之numpy庫[1]Python
- python之numpy庫[2]Python