【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資料科學
- Python資料分析之numpyPython
- 資深專家分享:從numpy開啟Python資料科學之旅!Python資料科學
- Python資料分析與展示之『Numpy』Python
- Python科學計算之Numpy陣列生成與運算Python陣列
- [python][科學計算][numpy]使用指南Python
- Python資料分析 – numpyPython
- NumPy科學計算庫
- NumPy之:資料型別資料型別
- 用 Python 入門資料科學Python資料科學
- Python資料分析 numpy 筆記Python筆記
- 科學使用Python之condaPython
- 重學python【numpy】Python
- Python學習之Pandas和Numpy的區別!Python
- python-資料分析-Numpy-2Python
- Python資料科學(八)- 資料探索與資料視覺化Python資料科學視覺化
- 【機器學習】--Python機器學習庫之Numpy機器學習Python
- 什麼是NumPy?Python中NumPy資料型別有哪些?Python資料型別
- 資料科學與Python(習題彙總)資料科學Python
- 10大Python資料科學原始碼教程Python資料科學原始碼
- python應用資料科學的優勢Python資料科學
- NumPy之:使用genfromtxt匯入資料
- NumPy之:資料型別物件dtype資料型別物件
- 資料科學資料科學
- python_numPy學習Python
- python綜合學習四之Numpy和Pandas(下)Python
- 【轉】numpy:python資料領域的功臣Python
- python資料分析之Numpy資料庫第三期陣列的運算Python資料庫陣列
- PyTorch資料和NumPy資料之間的互操作PyTorch
- python---之numpy.pad()Python
- 《Python入門與資料科學庫》學習筆記Python資料科學筆記
- Anaconda3-大資料之Numpy(1)大資料
- Python---資料科學領域常用的15個Python包Python資料科學
- Python資料分析(一)--numpy全知全會Python
- Python NumPy學習總結Python
- python——numpy學習筆記Python筆記
- Python機器學習 5個資料科學家案例解析Python機器學習資料科學
- 每週一書《Python資料科學手冊》分享!Python資料科學