一、基本概念
1、什麼是Numpy
一個在Python中做科學計算的基礎庫,重在數值計算,也是大部分PYTHON科學計算庫的基礎庫,多用於在大型、多維數組上執行數值運算
二、數組的創建和改變維數
1、numpy創建數組(矩陣)
import numpy as np
# 三種創建數據的方法,數組的類名爲ndarray,數據的類型爲int32
t1 = np.array([1, 2, 3])
print(t1)
print(type(t1))
t2 = np.array(range(10))
print(t2)
print(type(t2))
t3 = np.arange(4, 10, 2)
print(t3)
print(type(t3))
print(t3.dtype)
E:\python3\python.exe H:/PythonProject/DataAnalyse/numpy_course/new_arry.py
[1 2 3]
<class 'numpy.ndarray'>
[0 1 2 3 4 5 6 7 8 9]
<class 'numpy.ndarray'>
[4 6 8]
<class 'numpy.ndarray'>
int32
指定創建數組的數據類型
import numpy as np
t4 = np.array(range(1, 4), dtype=float32)
print(t4)
print(t4.dtype)
----------------------------------------------------------------------------------
E:\python3\python.exe H:/PythonProject/DataAnalyse/numpy_course/new_arry.py
[1. 2. 3.]
float32
Process finished with exit code 0
import numpy as np
t5 = np.array([1,0,0,1,1,0],dtype=bool)
print(t5)
print(t5.dtype)
---------------------------------------------------------------------------
E:\python3\python.exe H:/PythonProject/DataAnalyse/numpy_course/new_arry.py
[ True False False True True False]
bool
修改數組的數據類型:
t5 = np.array([1,0,0,1,1,0],dtype=bool)
print(t5)
print(t5.dtype)
t6 = t5.astype("int8")
print(t6)
print(t6.dtype)
--------------------------------------------------------------
E:\python3\python.exe H:/PythonProject/DataAnalyse/numpy_course/new_arry.py
[ True False False True True False]
bool
[1 0 0 1 1 0]
int8
取小數並保留兩位
t7 = np.array([random.random() for i in range(10)])
print(t7)
print(t7.dtype)
t8 = np.round(t7, 2)
print(t8)
-------------------------------------------------------------------------
E:\python3\python.exe H:/PythonProject/DataAnalyse/numpy_course/new_arry.py
[0.04811729 0.1599298 0.37288476 0.01717569 0.44839734 0.65061334
0.33807003 0.60770559 0.6994518 0.35313622]
float64
[0.05 0.16 0.37 0.02 0.45 0.65 0.34 0.61 0.7 0.35]
數組的形狀:
修改數組的形狀:reshape()接收的參數是一個元組
調用reshape()方法不會對數組本身進行修改
使用新的參數取接受reshape()的返回值
把數組轉化爲1維數據
當不知道數組的個數進行降維時
shape[0]*shape[1]代表總共個數
另一個簡單方法, 按照行進行展開:
三、數組的計算
1、數組和數的計算
給數組加一個數即給每一個元素都加上一個數字,分別進行計算。
這是一個Numpy的廣播機制造成的,在運算過程中,加減乘輸的值被廣播到所有的元素上面。
2、數組和數組的計算
不同維度的計算
滿足後緣維度的軸長相符的例子
長度爲1的例子:
shape爲(2,3,4)和(2,4)
軸(axis):在numpy中可以理解爲方向,使用0,1,2…數字表示,對於一個一維數組,只有一個0軸,對於2維數組(shape(2,2)),有0軸和1軸,對於三維數組(shape(2,2, 3)),有0,1,2軸
四、numpy讀取數據
np.loadtxt(fname,dtype=np.float,delimiter=None,skiprows=0,usecols=None,unpack=False)
現在這裏有一個英國和美國各自youtube1000多個視頻的點擊,喜歡,不喜歡,評論數量([“views”,“likes”,“dislikes”,“comment_total”])的csv,運用剛剛所學習的只是,我們嘗試來對其進行操作
import numpy as np
us_file_path = "US_video_data_numbers.csv"
uk_file_path = "GB_video_data_numbers.csv"
t1 = np.loadtxt(us_file_path,dtype=int,delimiter=",")
t2 = np.loadtxt(uk_file_path,dtype=int,delimiter=",")
print(t1)
print('*'*50+'分割線'+'*'*50)
print(t2)
轉置矩陣的三種方法:
五、numpy索引和切片
取數組中的某一行
import numpy as np
us_file_path = "US_video_data_numbers.csv"
t2 = np.loadtxt(us_file_path,dtype=int,delimiter=",")
print(t2)
print('*'*50+'分割線'+'*'*50)
# 取某一行
print(t2[2]) # 或者print(t2[2, ])
取連續的多行
print(t2[2:])
#或者 print(t2[2:, :]) 逗號後面的冒號表示全部列都取到
取不連續的多行
變爲二維數組且不連續就要再加一箇中括號
print(t2[[1,4,7]])
#print(t2[[1,4,7],:])
取列
# 取某列
print(t2[:, 0])
# 取連續的多列
print(t2[:, 2:])
# 取不連續的多列
print(t2[:,[1,3]])
取第三行,第四列的值
print(t2[2,3])
取多行和多列,取第3行到第5行,第二列到第四列的結果:
print(t2[2:5,1:4])
取一些不相鄰的點
print(t2[[0,2,2],[0,1,3]])