【python資料分析】numpy的基本使用方法
阿新 • • 發佈:2019-02-14
import numpy as np c=[] def numpysum(n): #0到(n-1)的列表 a=np.arange(n)**2 #生成一個0到(n-1)的列表,每個項再平方 b=np.arange(n)**3 #生成一個0到(n-1)的列表,每個項再進行3次方 c=a+b #兩個列表相加 return c c=numpysum(5) print(c) print(c[0:2]) #切片輸出 c[0]=10 #將第1個數改為10 print(c) print(c.dtype) #檢視資料型別 print(c.shape) #檢視維度
[ 0 2 12 36 80] [0 2] [10 2 12 36 80] int32 (5,)
np.zeros(10) #都是0的資料
array([ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.])
np.zeros((2,5))
array([[ 0., 0., 0., 0., 0.], [ 0., 0., 0., 0., 0.]])
np.empty((2,3,5))
array([[[ 1.13899312e-311, 9.58487353e-322, 0.00000000e+000, 0.00000000e+000, 1.13738974e-311], [ 5.02034658e+175, 7.03899687e-033, 3.06994030e-057, 1.09044515e-071, 7.82430736e+020], [ 1.47763641e+248, 1.16096346e-028, 7.69165785e+218, 1.35617292e+248, 6.21063611e-038]], [[ 3.06189175e-057, 1.58571427e+006, 3.04884885e+025, 4.26032557e-096, 6.32299154e+233], [ 6.48224638e+170, 5.22411352e+257, 5.74020278e+180, 8.37174974e-144, 1.41529402e+161], [ 9.16651763e-072, 4.10024123e+097, 1.74686353e-076, 2.74549255e+126, 4.06321267e-317]]])
a = np.array([[1,2],[3,4]])
print(a)
print(a[0,0])
print(a[0,1])
print(a[1,0])
print(a[1,1])
[[1 2] [3 4]] 1 2 3 4
#numpy資料型別 #型別 #型別程式碼 #說明 #int8、uint8 i1、u1 有符號、無符號的8位型別 #int16、uint16 i2、u2 有符號、無符號的16位型別 #int32、uint32 i4、u4 有符號、無符號的32位型別 #int64、uint64 i8、u8 有符號、無符號的64位型別 #float16 f2 半精度浮點數 #float32 f4或f 標準單精度浮點數 #float64 f8或d 標準雙精度浮點數 #float128 f16或g 拓展精度浮點數 #bool ? 儲存true和false型別,0為false,非0為true #string s 固定長度的字串型別。比如建立長度為10的字串:S10 #object o python物件型別 #unicode u 固定長度的unicode
print('int8 : 10.0')
print(np.int8(10.0))
print('float16 : 10')
print(np.float16(10))
int8 : 10.0 10 float16 : 10 10.0
print('bool : 15')
print(np.bool(15))
print(np.bool(-1))
print(np.bool(0))
bool : 15 True True False
print(np.arange(7,dtype=np.float16)) #建立資料的時候,定義資料型別
print(np.arange(5,dtype='i1'))
print(np.arange(5,dtype='f'))
[ 0. 1. 2. 3. 4. 5. 6.] [0 1 2 3 4] [ 0. 1. 2. 3. 4.]
#資料型別的轉換
arr = np.array([1,2,3,4,5])
print(arr.dtype)
float_arr = arr.astype(np.float64)
print(float_arr.dtype)
int32 float64
#建立自定義資料型別 商品名稱(40個長度的字串),商品數量(int32),價格(float32)
t = np.dtype([('name',np.str_,40),('numitems',np.int32),('price',np.float32)])
print(t)
print(t['name'])
itemz = np.array([('蘋果',25,2.6),('西瓜',30,25)],dtype=t)
print(itemz)
[('name', '<U40'), ('numitems', '<i4'), ('price', '<f4')] <U40 [('蘋果', 25, 2.5999999) ('西瓜', 30, 25. )]
#陣列與標量之間的運算
arr = np.array([[1,2,3],[4,5,6]])
print(arr*arr)
print(1/arr)
print(arr*0.5)
[[ 1 4 9] [16 25 36]] [[ 1. 0.5 0.33333333] [ 0.25 0.2 0.16666667]] [[ 0.5 1. 1.5] [ 2. 2.5 3. ]]
#一維陣列的索引與切片
a = np.arange(9)
print(a[0:9:2]) #0到9,每隔一個數輸出
print(a[:-1])
s = slice(3,7,2) #3到7,每隔一個數輸出
print(a[s])
[0 2 4 6 8] [0 1 2 3 4 5 6 7] [3 5]
#多維陣列的索引與切片
b = np.arange(24).reshape(2,3,4) #2個數組(2維),3行,4列
print(b)
print('----------------------------------------------------------1------')
print(b[0,0,0])
print('----------------------------------------------------------2------')
print(b[1,2,1]) #第2個數組,第3行,第2列
print('----------------------------------------------------------3------')
print(b[:,0,0])
print('----------------------------------------------------------4------')
print(b[:,1:2])
print('----------------------------------------------------------5------')
print(b[:,1,1:3]) #第1、2維,第2行,第2第3個數據 5 6 17 18
print('----------------------------------------------------------6------')
print(b[:,1]) #第1、2維,第2行
print('----------------------------------------------------------7------')
print(b[:,:,3]) #第1、2維,第4列
print('----------------------------------------------------------8------')
print(b[::-1]) #把第1和第2維的位置互換
[[[ 0 1 2 3] [ 4 5 6 7] [ 8 9 10 11]] [[12 13 14 15] [16 17 18 19] [20 21 22 23]]] ----------------------------------------------------------1------ 0 ----------------------------------------------------------2------ 21 ----------------------------------------------------------3------ [ 0 12] ----------------------------------------------------------4------ [[[ 4 5 6 7]] [[16 17 18 19]]] ----------------------------------------------------------5------ [[ 5 6] [17 18]] ----------------------------------------------------------6------ [[ 4 5 6 7] [16 17 18 19]] ----------------------------------------------------------7------ [[ 3 7 11] [15 19 23]] ----------------------------------------------------------8------ [[[12 13 14 15] [16 17 18 19] [20 21 22 23]] [[ 0 1 2 3] [ 4 5 6 7] [ 8 9 10 11]]]