Python開源的科學計算基礎庫html
1.表示N維數組對象ndarrayc++
2.線性代數、傅里葉變換、隨機數生成數組
3.廣播函數,整合c++、c函數
一.數據的維度spa
1.數據htm
2.數據維度對象
3.一維數據blog
(1)特色索引
(2)Python中的表達方式utf-8
列表、集合類型
(3)列表和數組的區別
數據類型要求不同
4.二維數據
(1)概念,多個一位數據組成,一個覺得數據的組合。
(2)列表
5.多維數據
(1)
(2)列表
6.高維數據
(1)僅利用最基本的二元關係展現數據間的複雜關係
(2)字典類型或者數據表示格式
二.numpy庫中的N維數組對象ndarray
1.使用numpy數組緣由:
(1)節省空間
(2)numpy的底層實現靠c語言實現的,提升運行速度。
代碼示例:
2.N維數組對象-ndarray
(1)組成
實際的數據
描述這些數據的元數據(數據維度、數據類型等)
軸、秩
方法 | 功能 |
.ndim | 軸 |
.shape | 秩 |
.size |
元素個數 |
.dtype | 數據類型 |
.itemsize | 元素所佔的字節 |
import numpy as np
a=np.array([[0,1,2,3,4],[9,8,7,6,5]])# -*- coding: utf-8 -*-
print(a.ndim)
print(a.shape)
print(a.size)
print(a.dtype)
print(a.itemsize)
輸出:
2
(2, 5)
10
int32
4
(2)要求全部的元素類型相同,數組下標從0開始。
(3)實例
(4)支持那麼多數據類型緣由
(5)不一樣質數據類型
()
3.ndarray數組的建立方法
(1)從Python的列表、元組等等類型建立ndarray數組
x=np.array(list/tuple),detype=數據類型)
不指定元素類型,根據讀入的數據類型肯定,根據最高級肯定數據類型。
(2)使用numpy中函數建立ndarray數組,如arange,ones,Zeros等
最經常使用的方法
函數 | 做用 | 具體應用 |
np.arange(n) | 相似range()函數,返回ndarray類型,元素從0到-1 | |
np.ones(shape) | 根據shape生成一個全1數組,shape是元組類型 | np.ones(2,3) |
np.zeros(shape) | 根據shape生成一個全0數組,shape是元組類型 | |
np.full(shape,val) | 根據shape生成一個數組,每一個元素值都是val | |
np.eye(n) | 建立一個證放的n*n單位矩陣,對角線爲1,其他爲0 |
代碼示例:
import numpy as np
#arange生成的爲整數類型
print(np.arange(10))
#其餘的都爲浮點數類型
print(np.ones((3,6)))
print(np.zeros((3,6)))
print(np.eye(5))
輸出:
[0 1 2 3 4 5 6 7 8 9]
[[1. 1. 1. 1. 1. 1.]
[1. 1. 1. 1. 1. 1.]
[1. 1. 1. 1. 1. 1.]]
[[0. 0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0. 0.]]
[[1. 0. 0. 0. 0.]
[0. 1. 0. 0. 0.]
[0. 0. 1. 0. 0.]
[0. 0. 0. 1. 0.]
[0. 0. 0. 0. 1.]]
生成多維數組
代碼示例:
import numpy as np
x=np.ones((2,3,4))
print(x)
print(x.shape)#最外層到最內層元素變化的方式。
輸出:
[[[1. 1. 1. 1.]
[1. 1. 1. 1.]
[1. 1. 1. 1.]]
[[1. 1. 1. 1.]
[1. 1. 1. 1.]
[1. 1. 1. 1.]]]
(2, 3, 4)
(3)從字節流(raw bytes)中建立ndarray數組
(4)從文件讀取特定格式,建立ndarray數組
(5)數據類型多爲浮點數,符合現實計算的思惟。
(6)ndarray數組的變換
astype:建立一個新的數組
(7)數組轉換爲Python中列表
3.ndarray數組的操做
(1)數組的索引和切片
索引:獲取數組中特定元素位置的過程(找到元素在數組中的位置)。
切片:獲取數組元素子集的過程(得到數組元素一部分)。
示例
一維數組索引:和Python列表中同樣。
一維數組的切片:和Python列表切片同樣。
多維數組的索引和切片首先要分辨出對象爲幾維的數組。
多維數組索引:a[1,2,3]表示的是:第一個維度的第二個軸的元素,第二個維度的第三個軸的元素,第三個維度的最後一個軸的第四個位置的元素。(由外而內的去尋找索引位置)
多維數組的切片:a[:,1:3,:],從外而內的尋找切片內容。
代碼示例:
import numpy as np
a=np.array([[[1,2,3,4],[5,6,7,8],[9,10,11,12]],[[13,14,15,16],[17,18,19,20],[21,22,23,24]]])
print(a[1,2,3])
print(a[:,1:3,:])
print(a[:,:,::2])
輸出:
24
[[[ 5 6 7 8]
[ 9 10 11 12]]
[[17 18 19 20]
[21 22 23 24]]]
[[[ 1 3]
[ 5 7]
[ 9 11]]
[[13 15]
[17 19]
[21 23]]]
能夠對建立後的ndarray的維度和元素類型進行變換。
4.ndarray的運算
(1)數組與標量之間的運算
數組與標量之間的運算做用與數組的每個元素。
代碼示例:
(2)numpy中的一元函數,對數組的運算就是對數組中每個元素的運算。
函數 | 做用 |
np.abs(x) np.fabs(x) | 計算數組各元素的絕對值 |
np.sqrt(x) | 計算數組各元素的平方根 |
np.square(x) | 計算數組各元素的平方 |
np.log(x) 、np.log10(x)、nplog2(x) | 計算數組各元素的天然對數、10底數和2底對數 |
np.ceil(x)、np.floor(x) | 計算數組各元素的ceiling值或floor值 |
代碼示例:
import numpy as np
a=np.arange(24).reshape((2,3,4))
np.square(a)
print(a)
a=np.sqrt(a)
print(a)
a=np.modf(a)
print(a)
輸出:
特色:進行一元函數操做後會生成一個新的數組,原來的數組沒有被改變,想要改變原來的數組須要把改變後的值賦給舊的數組。
(3)numpy的二元函數,對兩個數組運算的函數(實際上是對兩數組中的每一個元素的運算)。
代碼示例:
import numpy as np
a=np.arange(24).reshape((2,3,4))
b=np.square(a)
c=np.maximum(a,b)
print(c)
print(a>b)
輸出:
[[[ 0 1 4 9]
[ 16 25 36 49]
[ 64 81 100 121]]
[[144 169 196 225]
[256 289 324 361]
[400 441 484 529]]]
[[[False False False False]
[False False False False]
[False False False False]]
[[False False False False]
[False False False False]
[False False False False]]]
附件參考資料連接:http://www.cnblogs.com/WSX1994/articles/9061516.html