1. 程式人生 > >python --資料視覺化(二)

python --資料視覺化(二)

一、NumPy

1、簡介:

 官網連結:http://www.numpy.org/

 NumPy是Python語言的一個擴充程式庫。支援高階大量的維度陣列與矩陣運算,此外也針對陣列運算提供大量的數學函式庫

2、基本功能:

  • 快速高效的多維陣列物件ndarray
  • 用於對陣列執行元素級計算以及直接對陣列執行數學運算的函式
  • 用於讀寫硬碟上基於陣列的資料集的工具
  • 線性代數運算、傅立葉變換,以及隨機數生成
  • 用於將C、C++、Fortran程式碼整合到Python的工具
  • 除了為Python提供快速的陣列處理能力,NumPy在資料分析方面還有另外一
  • 個主要作用,即作為在演算法之間傳遞資料的容器。

3、NumPy的ndarray 建立ndarray

* 陣列建立函式

 

demo:

import numpy

print('使用普通一維陣列生成NumPy一維陣列')
data = [6, 7.5, 8, 0, 1]
arr = numpy.array(data)
print(arr)
print(arr.dtype)


print('使用普通二維陣列生成NumPy二維陣列')
data = [[1, 2, 3, 4], [5, 6, 7, 8]]
arr = numpy.array(data)
print(arr)
print('列印陣列維度')
print(arr.shape)

print('使用zeros/empty') print(numpy.zeros(10)) # 生成包含10個0的一維陣列 print(numpy.zeros((3, 6))) # 生成3*6的二維陣列 print(numpy.empty((2, 3, 2))) # 生成2*3*2的三維陣列,所有元素未初始化。 print print('使用arrange生成連續元素') print(numpy.arange(15)) # [0, 1, 2, ..., 14]

 

輸出:

使用普通一維陣列生成NumPy一維陣列
[6.  7.5 8.  0.  1. ]
float64
使用普通二維陣列生成NumPy二維陣列
[[
1 2 3 4] [5 6 7 8]] 列印陣列維度 (2, 4) 使用zeros/empty [0. 0. 0. 0. 0. 0. 0. 0. 0. 0.] [[0. 0. 0. 0. 0. 0.] [0. 0. 0. 0. 0. 0.] [0. 0. 0. 0. 0. 0.]] [[[8.82769181e+025 7.36662981e+228] [7.54894003e+252 2.95479883e+137] [1.42800637e+248 2.64686750e+180]] [[1.09936856e+248 6.99481925e+228] [7.54894003e+252 7.67109635e+170] [2.64686750e+180 5.63234836e-322]]] 使用arrange生成連續元素 [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14]
View Code

 

4、NumPy的ndarray NumPy資料型別

 

 

demo:

import numpy as np

print('生成陣列時指定資料型別')
arr = np.array([1, 2, 3], dtype = np.float64)  # 生成ndarray陣列,資料型別:float64
print(arr.dtype)
arr = np.array([1, 2, 3], dtype = np.int32)
print(arr.dtype)


print ('使用astype複製陣列並轉換資料型別')
int_arr = np.array([1, 2, 3, 4, 5])
float_arr = int_arr.astype(np.float)
print (int_arr.dtype)
print (float_arr.dtype)


print ('使用astype將float轉換為int時小數部分被捨棄')
float_arr = np.array([3.7, -1.2, -2.6, 0.5, 12.9, 10.1])
int_arr = float_arr.astype(dtype = np.int)
print (int_arr)


print ('使用astype把字串轉換為陣列,如果失敗丟擲異常。')
str_arr = np.array(['1.25', '-9.6', '42'], dtype = np.string_)
float_arr = str_arr.astype(dtype = np.float)
print (float_arr)


print ('astype使用其它陣列的資料型別作為引數')
int_arr = np.arange(10)
float_arr = np.array([.23, 0.270, .357, 0.44, 0.5], dtype = np.float64)
print (int_arr.astype(float_arr.dtype))
print (int_arr[0], int_arr[1] ) # astype做了複製,陣列本身不變。

 

 輸出:

生成陣列時指定資料型別
float64
int32
使用astype複製陣列並轉換資料型別
int32
float64
使用astype將float轉換為int時小數部分被捨棄
[ 3 -1 -2  0 12 10]
使用astype把字串轉換為陣列,如果失敗丟擲異常。
[ 1.25 -9.6  42.  ]
astype使用其它陣列的資料型別作為引數
[0. 1. 2. 3. 4. 5. 6. 7. 8. 9.]
0 1
View Code

 5、NumPy的ndarray 陣列和標量之間的運算

  • 不用編寫迴圈即可對資料執行批量運算
  • 大小相等的陣列之間的任何算術運算都會將運算應用到元素級
  • 陣列與標量的算術運算也會將那個標量值傳播到各個元素

demo:

import numpy as np

# 陣列乘法/減法,對應元素相乘/相減。
arr = np.array([[1.0, 2.0, 3.0], [4., 5., 6.]])
print (arr * arr)  # 不需要做迴圈,相當於對應元素進行平方處理
print (arr - arr)


# 標量操作作用在陣列的每個元素上
arr = np.array([[1.0, 2.0, 3.0], [4., 5., 6.]])
print (1 / arr)
print (arr ** 0.5)  # 開根號

 

輸出:

[[ 1.  4.  9.]
 [16. 25. 36.]]

[[0. 0. 0.]
 [0. 0. 0.]]

[[1.         0.5        0.33333333]
 [0.25       0.2        0.16666667]]

[[1.         1.41421356 1.73205081]
 [2.         2.23606798 2.44948974]]
View Code