科學計算之numpy

從視頻教程中整理了大半天的numpy筆記(全部代碼拿過去就能運行):python

#!/usr/bin/env python
#coding:utf-8
import numpy as np
array = np.array([[1,2,3],[4,5,6]])
print(array)
print('維度:',array.ndim) #有幾行
print('類型:',array.shape) #(2, 3) 有幾行,幾列
print('size:',array.size) #總數大小
a = np.array([2,3,4], dtype=np.int64) #定義類型 int64
print(a.dtype)
a = np.zeros((3,4)) #定義一個三行四列的矩陣,裏面的只所有爲0
a = np.ones((3,4)) #生成一個三行四列的矩陣,值爲1
a = np.empty((3,4)) #生成一個三行四列的矩陣,值接近爲0
a = np.arange(1,10,2) #生成一個從1-9 步長爲2的矩陣
a = np.arange(10) #生成一個從0-9 的矩陣
a = np.arange(12).reshape(3,4) #生成一個3行4列的數列
a = np.linspace(1,10,20) #生成一個1-10之間的20段線段數列
a = np.linspace(1,10,6).reshape(2,3) #生成一個1-10之間2行3列的6段線段
a = np.array([10,20,30,40])
b = np.arange(4) #生成一個0-3之間四個數的矩陣,即0-3四個數組成的矩陣
print(a,b) #打印兩個矩陣
print(a+b) #矩陣相加
print(a-b) #矩陣相減
print(a*b) #矩陣相乘
print(a**b) #矩陣乘方
c = np.sin(a)*10 #對a中每一個值取sin, 再乘10, con, tan都是這樣的
print(c)
print(b<3) #判斷b中每一個數據是否是小於3, [ True True True False]
a = np.array([[1,2],[3,4]])
b = np.arange(4).reshape(2,2)
print(a,b)

print(a*b) #矩陣a和矩陣b中的每一個值相乘, 相乘以後的數值組成的一個矩陣
print(np.dot(a,b)) #矩陣與矩陣相乘,第一個矩陣的列等於第二個矩陣的行
print(a.dot(b)) #跟上面的結果是同樣的
a = np.random.random((2,4)) #在0-1之間隨機生成一個2行4列的一個矩陣
print(a)
print(np.sum(a)) #矩陣裏數值求和
print('###############################')
print(np.sum(a,axis=1)) #矩陣裏每行的求和
print(np.sum(a,axis=0)) #矩陣裏每列的求和
print(np.min(a)) #矩陣裏最小值
print(np.min(a,axis=1)) #矩陣裏每行最小值
print(np.min(a,axis=0)) #矩陣裏每列最小值
print(np.max(a)) #矩陣裏最大值
print(np.max(a,axis=1)) #矩陣裏每行最大值
print(np.max(a,axis=0)) #矩陣裏每列最大值

A = np.arange(1,13).reshape(3,4) #在1-13這12個數中,分紅3行4列
print(A)
print(np.argmin(A)) #求矩陣中最小值的索引 0
print(np.argmax(A)) #求矩陣中最大值的索引 11
print(np.mean(A)) #求矩陣中平均值
print(A.mean()) #求矩陣中平均值
print(np.median(A)) #求矩陣中中位數
print(np.cumsum(A)) #矩陣中數值累加,第一個爲第一個的值,第二個爲前兩個值的和,第三個爲前三個的和。。。
print(np.diff(A)) #矩陣中數值累差, 後面減前面一個的差
print(np.nonzero(A)) #找出矩陣中非0的數, 結果輸出兩個array, 第一個爲行,第二個爲列
A = np.arange(13,1,-1).reshape(3,4)
print(A)
print(np.sort(A)) #逐行從小到大排序
print(np.transpose(A)) #矩陣行列變換
print(A.T) #矩陣行列變換,上面的簡寫
print((A.T).dot(A)) #行列變換以後的矩陣再和之前的矩陣相乘
print(np.clip(A,5,10)) #矩陣小於5的等於5, 大於10的等於10, 只保留中間部分
print(np.mean(A,axis=1)) #矩陣中對行計算平均值,axis=0是對列計算平均值

A = np.arange(1,13)
print(A)
print(A[3]) #根據矩陣索引獲取值,從0開始的
A = np.arange(1,13).reshape(3,4)
print(A)
print(A[2]) #打印出第二行數據(從0開始數)
print(A[2][3]) #找出矩陣第2行第3列
print(A[2,3]) #找出矩陣第2行第3列
print(A[:,:]) #矩陣全部行全部列
print(A[:,1]) #矩陣第2列全部數
print(A[1,:]) #矩陣第2行全部數
print(A[1,2:]) #矩陣第一行第三個列及其之後的數
for row in A:
print(row) #迭代每一行
for column in A.T: #想迭代列先行列變換,將列變行,再迭代
print(column)
print(A.flatten()) #將三行四列的一個矩陣裏的值從新放到一個新的矩陣中
for item in A.flat: #A.flat返回一個可迭代對象
print(item)

A = np.array([1,1,1])
B = np.array([2,2,2])
C = np.vstack((A,B)) #將兩個序列上下合併成一個矩陣
# C = np.hstack((A,B)) #將兩個序列左右合併,變成一個序列
print(C)
print(A[np.newaxis,:]) #將A加一個維度,從一個序列變成由一行組成的矩陣
print(A[:,np.newaxis]) #將A加一個維度,從一個序列變成由一列組成的矩陣
A = A[np.newaxis,:] #將A, B 分別加一個維度
B = B[np.newaxis,:]
print('A,B:',A,B)
C = np.vstack((A,B)) #將兩個矩陣上下合併
C = np.hstack((A,B)) #將兩個矩陣左右合併,這裏將A、B合併成一個序列
print(C)
C = np.concatenate((A,B,B,A),axis=0) #能夠進行多個矩陣合併,能夠指定合併維度,axis=1指每一個矩陣按行左右合併,0是每一個矩陣按列上下合併
print(C)

A = np.arange(12).reshape((3,4))
print(A)
print(np.split(A,2,axis=1)) #將A進行分割,分紅兩個array,按行等量分割,分紅幾塊得能整除才能分割
print(np.array_split(A,3,axis=1)) #將A進行分割,按行分紅三個array,能夠進行不等量分割
print(np.vsplit(A,3)) #將A橫向平均分割成3塊
print(np.hsplit(A,2)) #將A縱向平均分割成2塊

a = np.arange(4)
print(a)
b = a
c = a
d = b
a[0] = 8
print(a)
print(d) #都是同樣的,一個改變了其餘都變
print(b is a) #若是同樣就是True
d[1:3] = [11,22]
print(a) #也是同樣的,等因而改的同一塊內存中的數據
#若是想a改變,其餘賦值的不變則須要深拷貝
b = a.copy() #深拷貝,拷貝數據從新放到另一塊內存中
print(a)
b[0] = 66
print(a,b) #b變了,a沒變
相關文章
相關標籤/搜索