python學習之numpy使用

#NumPy數據庫學習
#Numpy包含一下特點:
'''
1.強大的N維數組對象。
2.成熟的函數庫。
3.用於集成c/c++和Fortran代碼工具
4.實用的線性代數,傅里葉變換和隨機生成函數。
'''
import numpy as np
#4.1:屬性

array = np.array([[1,2,3],[4,5,6]])#將列表轉換爲矩陣,並轉換爲int類型

print(array)

print('array of dim is',array.ndim)#矩陣的維度

print('array of shape is',array.shape)#矩陣的行數和列數

print('array of size is',array.size)#矩陣元素個數

#4.2 :numpy:numpy創建Array

1,array:創建數組

2,dtype:指定數據類型

3,zeros:創建數據全爲零

4,ones:創建數據全爲一

5,empty:創建數據接近零

6,arange:指定範圍內創建數據

7,linspace:創建線段

#創建數組

a = np.array([1,2,3])

print(a)

#指定數據dtype

a = np.array([1,2,3],dtype=np.int)#指定爲int形

print(a.dtype)

b = np.array([1,2,3,4],dtype=np.float)#指定爲浮點型

print(b.dtype)

#創建特定數據

a = np.array([[1,2,3],[4,5,6]])#創建特定數據

print(a)

#創建全0數組

a = np.zeros((2,3))#全0兩行三列

print(a)

#創建全1數組,指定特定類型int

a = np.ones((2,3),dtype=np.int)

print(a)

#創建全空數組 每個數值接近0

a = np.empty([2,3])

print(a)

#array創建連續數組

a = np.arange(1,10,3)#1到10,步長爲3

print(a)

#reshape改變數據形狀

a = np.arange(6).reshape(2,3)

print(a)

#用linespace創建線段型數據

a = np.linspace(1,10,20)#1開始,10結束,創建10個數據

print(a)

#4.3 NumPy基礎運算
#基礎運算只加減乘除

a = np.array([10,20,30,40])

b = np.arange(4)

print(b)

c = a+b#加法運算

print(c)

d = a-b

print(d)#減法運算

e = 10*np.sin(a)#三角函數運算

print(e)

print(b<3)#邏輯判斷

f = np.random.random([2,3])#隨機生成兩行三列的舉證

print(f)

g = np.sum(b)#函數求和

print(g)

h = np.max(b)#求元素最大值最小值

i = np.min(b)

print(h)

print(i)

#多維數矩陣運算

a = np.array([[1,2],[3,4]])

print(a)

b = np.arange(4).reshape(2,2)

print(b)

c = a.dot(b)#c = dot(a,b) 矩陣相乘相乘計算

print(c)

#對行或列進行查找運算

a = np.array([[1,2],[3,4]])

print(np.max(a,axis=0))#按行求和最大值

print(np.max(a,axis=1))#按列求和最大值

print(np.min(a,axis=0))

print(np.min(a,axis=1))

#矩陣索引操作

a = np.arange(2,14).reshape(3,4)

print(a)

print(np.argmax(a))#矩陣中最大元素的索引

print(np.argmin(a))#矩陣中最小元素的索引

print(np.mean(a))#求解矩陣均值

print(np.average(a))

print(np.cumsum(a))#矩陣累加函數

print(np.diff(a))#矩陣累差函數

print(np.nonzero(a))#將非0元素的行與列座標分割開來

#矩陣的排序轉置替換

a = np.arange(14,2,-1).reshape(3,4)

print(a)

print(np.sort(a))#排序

print(np.transpose(a))#轉置

print(np.clip(a,5,9))#判斷當前矩陣元素是否比最小值小或比最大值大,若是則替換

#一維索引

a = np.arange(0,12)

print(a)

print(a[1])

b = np.arange(0,12).reshape(3,4)

print(b)

print(b[1])#第二行

#二維索引

a = np.arange(0,12).reshape(3,4)

print(a)

print(a[1,1])

print(a[1,1:3])#切片處理

for row in a:

print(row)

for col in a:

print(col)

for item in a.flat:

print(item)

#array置array合併

a = np.array([1,1,1])

b = np.array([2,2,2])

print(np.vstack((a,b)))#上下合併

print(np.hstack((a,b)))#左右合併

#增加維度

a = np.array([1,1,1])

print(a.shape)

print(a[np.newaxis,:])

print(a[np.newaxis].shape)#newaxis增加維度

print(a[:,np.newaxis])

print(a[:,np.newaxis].shape)

#多矩陣合併

a = np.array([1,1,1])[:,np.newaxis]

b = np.array([2,2,2])[:,np.newaxis]

print(np.concatenate((a,b,b,a),axis=0))#表示上下合併

print(np.concatenate((a,b,b,a),axis=1))

#矩陣分割

a = np.arange(0,12).reshape(3,4)

print(a)

print(np.split(a,3,axis=0))#橫向分割三部分np.vsplit(a,3)

print(np.split(a,2,axis=1))#豎向分割三部分

print(np.array_split(a,3,axis=1))#不等量分割三部分

#copy 與 deep copy

= 具有關聯性

a = np.arange(4)

b = a

c = a

d = b

print(b is a)

d[0] = 5

print(a)

#copy賦值方法沒有關聯性

a = np.arange(4)#deep copy

print(a)

b = a.copy()

print(b)

print(a)

b[0] = 5

print(b)

print(a)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章