ps两个库好多类似的函数傻傻分不清,总结下。

1.np.where

where()的用法

首先强调一下,where()函数对于不同的输入,返回的只是不同的。

1当数组是一维数组时,返回的值是一维的索引,所以只有一组索引数组

2当数组是二维数组时,满足条件的数组值返回的是值的位置索引,因此会有两组索引数组来表示值的位置

xx,yy,zz= np.where(Mask)

这是3维数组的x,y,z值。

2.比较重要的img是一张图片那么img2=cv2.imread(path)[::-1, ::-1, ::-1]中::-1 实现的其实是矩阵的翻转

比如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)

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

python 近期用到的基础知识汇总(主要是numpy和pytorch的相关矩阵变化函数)(一)相关推荐

  1. python 近期用到的基础知识汇总(主要是skimage的相关矩阵变化函数)(二)

    1.skimage.segmentation.clear_border函数 clear_border(labels, buffer_size=0, bgval=0, in_place=False)主要 ...

  2. python 近期用到的基础知识汇总(八)

    1.pytorch 的scatter()函数 scatter() 和 scatter_() 的作用是一样的,只不过 scatter() 不会直接修改原来的 Tensor,而 scatter_() 会. ...

  3. python 近期用到的基础知识汇总(六)

    1. Python列表索引批量删除. 一开始天真的一个一个用del函数删除如del list[id].然后发现删文件是按间隔来的(一个删除一个不动).后来想想就明白了,删除一个文件的同时list变短了 ...

  4. python 近期用到的基础知识汇总(五)

    1.pytorch中变量类型转换 将numpy矩阵转换为Tensor张量:sub_ts = torch.from_numpy(sub_img) #sub_img为numpy类型 将Tensor张量转化 ...

  5. python 近期用到的基础知识汇总(四)

    1.python中 return 的用法:return 语句就是讲结果返回到调用的地方,并把程序的控制权一起返回 程序运行到所遇到的第一个return即返回(退出def块),不会再运行第二个retur ...

  6. python 近期用到的基础知识汇总(三)

    1.python __len__(self)详解 如果一个类表现得像一个list,要获取有多少个元素,就得用 len() 函数.要让 len() 函数工作正常,类必须提供一个特殊方法__len__() ...

  7. python 近期用到的基础知识汇总(七)

    1.os.path.split():按照路径将文件名和路径分割开. 例如 o='/media/HDD/nnUNet_raw/nnUNet_raw_data/Task009_Spleen/inferTs ...

  8. python基础知识资料-Python基础知识汇总

    原标题:Python基础知识汇总 1.Anaconda的安装 百度Anaconda的官网,下载左边的Python3.X版本 然后是设置路径,最后给出Jupyter notebook.具体参考: 猴子: ...

  9. python基础知识资料-学习Python列表的基础知识汇总

    千里之行,始于足下.要练成一双洞悉一切的眼睛,还是得先把基本功扎扎实实地学好.今天,本喵带大家仔细温习一下Python的列表.温故而知新,不亦说乎. 当然,温习的同时也要发散思考,因为有些看似无关紧要 ...

最新文章

  1. 实时流处理系统容错机制(一):综述
  2. ORACLE 数据库性能 与裸设备
  3. 深度学习之卷积神经网络(13)DenseNet
  4. Cisco堆叠配置步骤+链路聚合实例
  5. LeetCode 1108. IP 地址无效化
  6. 计组之总线:1、总线(分类、特性、定义、性能指标)
  7. 网络拓扑故障诊断讲解总结
  8. POJ-2528 Mayor's posters 线段树+离散化 或 DFS
  9. Microsoft Updater Application Block 1.2.1 核心设计(core design) [翻译]
  10. SpringCloud微服务详细流程
  11. Power Query M语言全部list函数,快速分类掌握
  12. 卷积神经网络--MINIST数据集
  13. el table 固定表头和首行_再谈table组件:固定表头和表列
  14. stm32报错:identifier is undefined总结
  15. idea 无法加载识别本地类
  16. 《Unix编程艺术》重读笔记(三)
  17. 淘宝网禁售无证食品和保健品 问题商品将被屏蔽
  18. 2021年T电梯修理新版试题及T电梯修理模拟考试
  19. 最新Python异步编程详解
  20. fieldset lengend

热门文章

  1. 解决IIS占用CPU和内存大的问题
  2. react-native无法在react-native-gesture-handler中解析符号android.support.v4.util.Pools解决方案...
  3. Struts 配置文件
  4. SQL Server 2005 安装后,没有Management Studio管理工具的解决办法
  5. paip.性能跟踪profile原理与架构与本质-- python扫带java php
  6. ODP.NET数据访问
  7. 谁都会做:简单易行的祛斑法 - 健康程序员,至尚生活!
  8. 如何使用JMeter 对Dubbo接口进行测试
  9. python把某列改为日期格式_如何更改整列的日期格式?
  10. raster | R语言中的空间栅格对象及其基本处理方法(Ⅱ):投影、属性提取