ps兩個庫好多類似的函數傻傻分不清,總結下。
1.np.where
Python矩陣,where()的用法
首先強調一下,where()函數對于不同的輸入,返回的只是不同的。
1當數組是一維數組時,返回的值是一維的索引,所以只有一組索引數組
Python numpy、2當數組是二維數組時,滿足條件的數組值返回的是值的位置索引,因此會有兩組索引數組來表示值的位置
xx,yy,zz= np.where(Mask)
這是3維數組的x,y,z值。
2.比較重要的img是一張圖片那么img2=cv2.imread(path)[::-1, ::-1, ::-1]中::-1 實現的其實是矩陣的翻轉
python語言程序設計?比如a=[1,2,3,4,5] , a[::-1]=[5,4,3,2,1]
具體可以那一張圖試下就很清楚了可以參考如下代碼:
import cv2path="/home/pacs/桌面/xlc/FPN_Tensorflow-master/tools/inference_results/132.jpg"
img=cv2.imread(path)
img1=cv2.imread(path)[:, :, ::-1]
img2=cv2.imread(path)[:, ::-1, ::-1]
maxeps=150
eps = range(1, maxeps+1, 1)
print(eps)
print(img.shape[1])
print(img[50,549,0],img[50,549,1],img[50,549,2])#圖片大小shape[1]是600,故599-50=549
print(img1[50,50,0],img1[50,50,1],img1[50,50,2])
print(img2[50,50,0],img2[50,50,1],img2[50,50,2])
a='python'
b=a[::-1]
print(b) #nohtyp
c=a[::-2]
print(c) #nhy
cv2.namedWindow("Image")
cv2.imshow("Image", img)
cv2.namedWindow("Image1")
cv2.imshow("Image1", img1)
cv2.namedWindow("Image2")
cv2.imshow("Image2", img2)
cv2.waitKey (0)
3.np.expand_dims:用于擴展數組的形狀
import numpy as npIn [12]:
a = np.array([[[1,2,3],[4,5,6]]])
a.shape
Out[12]:
(1, 2, 3)
In [13]:
b = np.expand_dims(a, axis=0)
b
Out[13]:
array([[[[1, 2, 3],[4, 5, 6]]]])In [14]:
b.shape
Out[14]:
(1, 1, 2, 3)
python 列表,np.expand_dims(a, axis=X)表示在X位置添加數據
4.python中當a.shape為3*2,b.shape為3*1。a×b的效果為每列a對應點成b,結果3*2。
import numpy as np
a = np.array([[1,2],[3,4],[5,6]])
print(a)
print(a.shape)
resolution = np.array([1.5,1.5,1.5])
print(resolution.shape)
print(np.expand_dims(resolution,1))
print(np.expand_dims(resolution,1).shape)
print(np.expand_dims(resolution,1)*a)
5.np.floor(box).astype('int') 將矩陣box向下取整并設置為int類型
6.np.vstack沿著豎直方向將矩陣堆疊起來,np.hstack沿著水平方向將數組堆疊起來。
7.邏輯矩陣a和b,例如a=np.array([False]),b=np.array([True]),那么a+b相當于矩陣中對應位置a或b運算,而a^b相當于矩陣中敵營位置a異或b運算。相當于相同返還False,不同返回True。1-a=[1],1-b=[0]
8.np.concatenate?在實踐過程中,會經常遇到數組拼接的問題,基于numpy庫concatenate是一個非常好用的數組操作函數。a.傳入的參數必須是一個多個數組的元組或者列表。b.另外需要指定拼接的方向,默認是 axis = 0,也就是說對0軸的數組對象進行縱向的拼接(縱向的拼接沿著axis= 1方向);注:一般axis = 0,就是對該軸向的數組進行操作,操作方向是另外一個軸,即axis=1。
9.np.copy().若對初始變量進行改變,普通的等號會讓關聯的變量發生相同的改變(以前竟然沒有注意到Python的這個特性),np.copy()的變量則不會改變.
import numpy as np
a = np.array([1, 2, 3])
>>> b = a
>>> c = np.copy(a)
>>> a
array([1, 2, 3])
>>> b
array([1, 2, 3])
>>> c
array([1, 2, 3])
>>> a[0] = 4
>>> a
array([4, 2, 3])
>>> b
array([4, 2, 3]) # 普通的python等號會通過關聯讓相等的變量發生改變
>>> c
array([1, 2, 3]) # 通過np.copy則不會改變
10.pytorch中unsqueeze()函數unsqueeze(1)是在第一維尺度后面增加一個維度a的維度為(2,3),a.unsqueeze(1)的維度為(2,1,3)
11.pytorch之expand,gather,squeeze,sum,contiguous,softmax,max,argmax鏈接https://blog.csdn.net/hbu_pig/article/details/81454503#expand
12.torch 的view函數 a = torch.Tensor(2, 3,4),a.view(3, -1)的shape為[torch.FloatTensor of size 3x8]。
13.torch 的transpose函數交換維度 a = torch.Tensor(2, 3,4),a.transpose(1, 2)的shape為[torch.FloatTensor of size 2x4x3]
14.np.tile 參考https://www.jianshu.com/p/9519f1984c70
15.slice = random.sample(list, 5)從list中隨機獲取5個元素,作為一個片段返回。
16.tensorflow中用來拼接張量的函數tf.concat(),用法:tf.concat([tensor1, tensor2, tensor3,...], axis)
這里解釋了當axis=0和axis=1的情況,怎么理解這個axis呢?其實這和numpy中的np.concatenate()用法是一樣的。
axis=0? ? ?代表在第0個維度拼接
axis=1? ? ?代表在第1個維度拼接?
參考:https://blog.csdn.net/leviopku/article/details/82380118
17.np.newaxis函數的用法。sliceim = sliceim2[np.newaxis,...]#np.newaxis 增加一個維度<type 'tuple'>: (307, 263, 330)到<type 'tuple'>: (1, 307, 263, 330)
18.torch.cat( )函數用法:output = torch.cat([output4,output3,output2],0)
output4,output3,output2分別為torch.Size([331776, 5])、torch.Size([41472, 5])、torch.Size([5184, 5])。
output 的尺寸為torch.Size([378432, 5])。
和np.concatenate()用法是一樣的
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态