Python矩陣,python 近期用到的基礎知識匯總(主要是numpy和pytorch的相關矩陣變化函數)(一)

 2023-10-06 阅读 31 评论 0

摘要:ps兩個庫好多類似的函數傻傻分不清,總結下。 1.np.where Python矩陣,where()的用法 首先強調一下,where()函數對于不同的輸入,返回的只是不同的。 1當數組是一維數組時,返回的值是一維的索引,所以只有一組索引數組 Python

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()用法是一樣的

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/5/123100.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息