Data Science | Numpy基礎(二)
Anaconda的基本用法
按照上篇文章,相信大家都安裝好了Anaconda,有朋友在留言區留言希望出一篇關於Anaconda的使用教程,其實Anaconda的基本使用非常簡單,基本無需教程。
在windows下安裝好Anaconda後,在所有程式中可以看到Anaconda下有以下幾個元件:
Anaconda Navigator:用於管理工具包和環境的圖形介面。
Anaconda Prompt:用於管理包和環境的命令列介面。
Jupyter Note book:基於Web的互動式計算環境,用於展示資料分析的過程,並且生成容易閱讀的文件。
Spyder:Python整合開發環境,佈局類似於Matlab。
我們學習主要使用的是第三個Jupyter Note book。
這裡簡單普及一下常用的Anaconda命令(雖然我也不經常用)。
檢視軟體版本號
python --version #檢視Python版本
conda --version #檢視conda的版
新增映象
conda config --add channels
更新conda
conda upgrade --all
檢視已經安裝的packages
conda list
conda install [package name] #安裝package,安裝在預設的Python環境中
新手入門建議只安裝Anaconda,可以省去很多不必要的麻煩,以上就是Anaconda的基本使用,歡迎大家在留言區補充。
Numpy索引及切片
糾正下上一篇的錯誤:
# 正確的匯入方式
import numpy as np
numpy的索引方式和Python中的列表索引相似,這裡主要介紹普通陣列索引/切片和布林型陣列的索引/切片。
一維陣列的索引/切片
一維陣列的索引和切片和Python中的列表相同,索引都是從0開始,切片都是左閉右開。
import numpy as np
ar = np.arange(20)
# 輸出ar的第4個值
print(ar[3])
# 輸出ar的前四個值
print(ar[:4])
>>>
4
[0 1 2 3]
多維陣列的索引/切片
二維陣列可以理解為兩個一維陣列橫向堆疊在一起,所只要分別取對應索引即可。
import numpy as np
ar = np.arange(16).reshape(4,4)
# 二維陣列索引遵照先行後列(有以下兩種寫法)
# 選取第二行第二列的值
print(ar[2][2])
print(ar[2,2])
# 二維陣列切片
# 取出前兩行的值
print(ar[:2])
# 取出前兩行後兩列的值
print(ar[:2,2:])
>>>
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]
[12 13 14 15]]
10
10
[[0 1 2 3]
[4 5 6 7]]
[[2 3]
[6 7]]
三位陣列的索引、切片的取值方式相當與二維陣列的進化版。
import numpy as np
ar = np.arange(12).reshape(3,2,2)
print(ar)
# 三維陣列索引遵照先維度後行再列
print(ar[2][0][1])
print(ar[2,0,1])
# 切片
# 獲取第一個陣列的第一行的第一列的數
print(ar[:1,:1,:1])
>>>
[[[ 0 1]
[ 2 3]]
[[ 4 5]
[ 6 7]]
[[ 8 9]
[10 11]]]
[[[0]]]
9
9
布林型的索引及切片
布林型陣列的使用是本片文章的重點。
# 簡單展示一下布林型的一維陣列長啥樣
i = np.array([True,False,True])
j = np.array([True,True,False,False])
print(i)
print(j)
>>>
[ True False True]
[ True True False False]
而我們經常見到的是這樣的:
ar = np.arange(12).reshape(3,4)
print(ar)
print(ar>5)
>>>
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
[[False False False False]
[False False True True]
[ True True True True]]
當我們需要篩選出ar中大於3的值,就可以使用布林值進行篩選,如下:
ar = np.arange(12).reshape(3,4)
print(ar[ar>3])
>>>
[ 4 5 6 7 8 9 10 11]
Numpy隨機數
均勻分佈和正態分佈
以均勻分佈和正態分佈的方式生成隨機數
# numpy.random.rand() 生成一個0-1的隨機浮點數或N維浮點數 --均勻分佈
a = np.random.rand()
b = np.random.rand(4,4)
print(a)
print(b)
>>>
0.5544023939180306
[[0.46387648 0.97345876 0.12059175 0.7565951 ]
[0.30192996 0.76633208 0.20107761 0.09315875]
[0.79347118 0.26714404 0.08628158 0.72510313]
[0.06606087 0.93260038 0.90268201 0.90941348]]
以正太分佈的方式生成隨機數
# numpy.random.randn() 生成一個0-1的隨機浮點數或N維浮點數 --正態分佈
a = np.random.randn()
b = np.random.randn(4,4)
print(a)
print(b)
>>>
0.26901442604096687
[[ 0.40261375 -0.23541184 0.96607489 -1.11253043]
[-0.31670703 0.05841136 -0.01862511 1.72597729]
[ 0.17052799 1.03537825 -0.94375417 1.32484928]
[ 0.132761 0.44950533 0.44131534 -0.11319535]]
按照上面的寫法相信大家對與.randn()和.rand()的認識還不夠清晰,這裡用視覺化的方式展示一下:
#平均分佈
# numpy.random.rand() 生成一個0-1的隨機浮點數或N維浮點數 --均勻分佈
data1 = np.random.rand(500)
data2 = np.random.rand(500)
#正態分佈
# numpy.random.randn() 生成一個浮點數或N維浮點數 --正態分佈
data3 = np.random.randn(500)
data4 = np.random.randn(500)
import matplotlib.pyplot as plt
% matplotlib inline
plt.scatter(data1,data2)
plt.scatter(data3,data4)
這是隨機分佈的圖樣:
這是正態分佈的圖樣:
可以看到正態分佈和隨機分佈的成像還是有較大不同的,當然這裡只是加深大家對.randn()和.rand()的認識,視覺化在之後會進一步學習。
Numpy隨機數的其他用法
#隨機整數
print(np.random.randint(2))
#在2-10之間生成隨機整數
print((np.random.randint(2,10)))
# 在0-10之間生成10個整數
print((np.random.randint(10,size=10)))
# 在0-10之間生成包含10個元素的二維陣列
print(np.random.randint(10,size=(2,5)))
# 在10-50之間生成包含10個元素的二維陣列
print(np.random.randint(10,50,size=(2,5)))
作業
建立2個包含10個元素的正太分佈一維陣列。
請按照要求建立陣列ar,再將ar[:2,:2]的值改為[0,1)的隨機數。
按照要求建立陣列,透過索引,其ar[4]、ar[:2,3:]、ar[3][2]分別是多少。
按照要求建立陣列,篩選出元素值大於5的值並生成新的陣列。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31556785/viewspace-2216601/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Data Science | Numpy基礎(一)
- NumPy 基礎 (二) - 陣列運算陣列
- Numpy基礎
- Making Kotlin Ready for Data ScienceKotlin
- Python Numpy基礎教程Python
- CS439: Introduction to Data Science
- numpy 基礎入門 - 30分鐘學會numpy
- NumPy 基礎 (一) - 建立陣列陣列
- NumPy基礎知識圖譜
- NumPy 基礎 (三) - 數學函式函式
- Numpy基本用法(很基礎的點哦)
- python第二階段(15)numpy入門基礎-視覺化之條形圖Python視覺化
- iOS開發基礎135-Core DataiOS
- Kotlin基礎二Kotlin
- 逆向基礎(二)
- Dart基礎(二)Dart
- 基礎題二
- python-資料分析-NumPy的應用-1、基礎Python
- Azure Data Factory(九)基礎知識回顧
- DataBinding基礎使用二
- 前端基礎——HTML(二)前端HTML
- 二、MySQL基礎操作MySql
- JAVA SE基礎(二)Java
- Java基礎 —— 集合(二)Java
- Numpy庫基礎分析——詳解datetime型別的處理型別
- salesforce零基礎學習(一百零五)Change Data CaptureSalesforceAPT
- JavaScript基礎總結(二)JavaScript
- Python基礎語法(二)Python
- JavaScript基礎(二)變數JavaScript變數
- camera基礎知識二
- 【二】、UML基礎知識
- Three.js基礎(二)JS
- JavaSE基礎入門(二)Java
- DelayQueue系列(二):基礎元件元件
- Java基礎之二_字串Java字串
- HTML入門基礎(二)HTML
- Java基礎知識(二)Java
- 學會使用 NumPy:基礎、隨機、ufunc 和練習測試隨機