1. 程式人生 > >【python資料分析】numpy的基本使用方法

【python資料分析】numpy的基本使用方法

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]]]