Python之numpy基本指令


https://blog.csdn.net/mmm305658979/article/details/78745637

# -*- coding: utf-8 -*- 多加練習才是真

import numpy as np
from numpy import newaxis
from numpy import pi
import matplotlib.pyplot as plt
from numpy import ogrid

#生成數組(矩陣)
#a = np.array([[1,2,3],[4,5,6]]) #2*3

 

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

#a = np.ones(16,1); a = np.cumsum(a) #生成16*1矩陣,然后累加得到遞增值為1-16的矩陣,作用同下

 

#a = np.arange(15).reshape(3,5) #生成0開始遞增的15個數,然后分成3行5列矩陣
#a = np.arange(24).reshape(2,3,4) #生成2*3*4 3維數組
#np.set_printoptions(threshold='nan') #矩陣元素數量過多會自動省略顯示,它可以取消省略顯示
#c = np.array([1,2,3])
#c = np.arange(10,100,4) #10,14,18.....98;小數間隔也可
#c = np.linspace(0,2,9) #生成0-2等間隔的9個數
#c = np.ogrid[-100:100:3] #生成-100 - 100等間隔三個數
#c = np.zeros((4,4)) #生成4*4全0矩陣
#c = np.ones((4,4),dtype=float) #生成4*4全1矩陣,浮點型
#c = np.eye(2) #生成單位矩陣[[1,0],[0,1]]
#c = np.empty((2,3)) #隨機數,不太懂
#c = np.random.random((2,3)) # √生成隨機數矩陣,float
#c = np.random.noral(mu,sigma,1000) #生成位置參數和尺寸參數確定的1000個數據
#矩陣的操作

 

#print(np.sin(1))

#a = np.ravel(a) # (51,1)的array可以變為(51,)

#np.mat(a) #將a變為矩陣

 

#b = np.floor(a) #矩陣a中沒個元素去掉小數點后的數並保存為float格式
#print(a.ndim) #指的是二維矩陣即m*n的矩陣(數組),亦稱為秩(rank)
#np.trace(a) #矩陣的跡,對角線上數之和
#print(a.size) #矩陣所包含元素個數
#print(a.shape) #矩陣所包含元素形狀如(3,4)
#print(a.reshape(2,-1)) #變形為2行,列數自動計算,a本身不變
#a.resize(16,1) #a本身變形為16行1列,等於a.shape=16,-1
#print(a.T) #矩陣的轉置,1維向量並且沒加入newaxis時失效
#np.linalg.inv(a) #矩陣的逆矩陣,a*a-1 = 1
#print(a.data) #實際數組元素的緩沖區
#a = np.array([[1,0],[2,3]])
#b = np.array([[2,4],[1,5]])
#c = a*b #a和b對應位置相乘,與matlab中相反
#c = a.dot(b) #等同於c = np.dot(a,b),倆矩陣相乘
#a*=b,a+=b,a-=b #這種運算a,b必須同為整型或浮點型,而a+b(np.add(a,b))則可以int+float
#np.sum([[0, 1], [0, 5]], axis=1) #橫着加
#c = a + b #a(4*1),b(1*4) c(4*4)
#c = np.exp(1) #返回e(2.718)的a次方
#c = a**2 #a的平方
#c = a.sum(axis = 0 or 1) or a.max() or a.min #矩陣(0對應每列之和,1對應每行之和)的和,最大值與最小值
#c = a.argmax(axis=0) #返回矩陣每列最大值對應索引號
#a = np.arange(10)
#a[0:6:2] = 100 #0,2,4位置數變成100
#np.sort(a, axis = '-1', kind = 'quicksort') #排序,axis為對第幾行排序
#print(a[::-1]) #逆序排列
#print(np.all([[True, False], [True, True]])) #與,返回False
#print(np.any([[True, False], [True, True]])) #或
#ax,bx,cx = np.ix_(a,b,c)  #把a,b,c一維向量變成(x,1,1)(1,x,1)(1,1,x)維度方便他們相乘等


#def f(x,y):
#    return x+y
#a = np.fromfunction(f,(3,4)) #生成3*4矩陣,每個位置值由x和y計算后得到
#a[:,1:3] #返回矩陣a所有行,第2和3列


#矩陣的合並拆分
#print(a[-1]) #返回a最后一行,等於a[-1,:]
#b = [row for row in a] #row表示每一行,迭代輸出每一行
#b = [element for element in a.flat] #遍歷輸出矩陣每一個元素,類似b = a.ravel()
#c = np.vstack((a,b)) #豎向合並a,b,等於np.row_stack((a,b))
#c = np.hstack((a,b)) #橫向合並a,b,等於np.column_stack((a,b))
#c = np.hsplit(a,4) #矩陣a分成四等分1(列)|2|3|4
#c = np.vsplit(a,4) #矩陣a分成四等分1(行)/2(行)/3/4
#c = np.hsplit(a,(1,3)) #矩陣a的第2行和第三行一起被分出來


#newaxis對比(非1維矩陣(n*1)無需用,1維需用不然轉置合並等都會錯誤)
#a = np.array([1,2,3])
#b = np.array([[4,5,6]])
#print(a,b)
#c = a[:,newaxis]
#d = b[:,newaxis]
#print(c,d)
#e = np.hstack((a,b))
#g = np.hstack((c,d))
#print(e,g)


#r_與c_ 向量連接
#print(np.r_[np.array([1,2,3]), 0, 0, np.array([4,5,6])]) #r_用於連接行向量
#print(np.c_[np.array([[1,2,3]]), 0, 0, np.array([[4,5,6]])]) #c_用於連接縱向量


#深淺拷貝
#b = a #b變化a跟着變化,簡單賦值並沒有復制數組。 b is a √
#b = a.view() or a[:] #淺拷貝,b和a共享共同的值但是可以有不同的形狀。 b is a ×,b.base is a √ 
#b = a.copy() #深拷貝,b和a互相獨立。b is a ×,b.base is a ×


#數據的保存和讀取
#np.save("a.npy", a) #括號內首先確定保存的文件名,再確認要保存的數據(單個)
#c = np.load( "a.npy" ) #讀取數據
#np.savetxt("a.txt", a) #只能保存一個數組
#np.loadtxt("a.txt")

 

#np.savez("biubiu.npz",a,b,c)

#r = np.load("biubiu.npz") #讀入時變量列表看不到,輸入r["arr_0"]返回a,也可以import導入文件

 

 


#矩陣元素的查找
#np.searchsorted([1,2,3,4,5], [-10, 10, 2, 3]) #二分查找輸出-10等應該插入的位置
#b=np.nonzero(a) #矩陣非0元素位置,二維矩陣a則返回兩個向量對應橫縱坐標
#b=np.where(a>5) #矩陣中大於5的元素的位置
#a = np.array([1,2,3,4])
#b = np.array([True,False,True,False])
#print(a[b])
#print(a[a>2])

--------------------- 作者:黑山白雪m 來源:CSDN 原文:https://blog.csdn.net/mmm305658979/article/details/78745637?utm_source=copy 版權聲明:本文為博主原創文章,轉載請附上博文鏈接!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM