Numpy, Scipy, Matplotlib基本用法_np.imresize-程序员宅基地

技术标签: Python  

学习内容来自:Numpy Tutorial


基本的用法课程里面说的挺详细了。 特别记录一些需要关注的点。

Array Slicing

使用固定数字进行array寻址会导致数组降维。

y = np.random.random((3,2))
print(y)
[[0.44339891 0.27660025]
 [0.9809724  0.88663973]
 [0.18171569 0.72078505]]
print(y[0])
[0.44339891 0.27660025]

print(y[0,0])
0.4433989126430079

print(y[:1])
[[0.44339891 0.27660025]]

print(y[:1, :1])
[[0.44339891]]

Array Indexing

除了基础的类似于list 寻址的方法, numpy提供了另外的方便寻址法。

假设要从 d d d 维的tensor 中取出 n n n 个数据, 坐标分别是 ( x 1 ( 1 ) , x 2 ( 1 ) , ⋯   , x d ( 1 ) ) , ( x 1 ( 2 ) , x 2 ( 2 ) , ⋯   , x d ( 2 ) ) , ⋯   , ( x 1 ( n ) , x 2 ( n ) , ⋯   , x d ( n ) ) (x^{(1)}_1, x^{(1)}_2, \dotsb, x^{(1)}_d), (x^{(2)}_1, x^{(2)}_2, \dotsb, x^{(2)}_d),\dotsb, (x^{(n)}_1, x^{(n)}_2, \dotsb, x^{(n)}_d) (x1(1),x2(1),,xd(1)),(x1(2),x2(2),,xd(2)),,(x1(n),x2(n),,xd(n))

将上面的 n n n 个向量按照行拼接成矩阵, 然后做转置。 转置之后的每一行就是每个元素同一维度下的坐标。

按照 ( x 1 ( 1 ) , x 1 ( 2 ) , ⋯   , x 1 ( n ) ) , ( x 2 ( 1 ) , x 2 ( 2 ) , ⋯   , x 2 ( n ) ) , ⋯   , ( x d ( 1 ) , x d ( 2 ) , ⋯   , x d ( n ) ) (x^{(1)}_1, x^{(2)}_1, \dotsb, x^{(n)}_1), (x^{(1)}_2, x^{(2)}_2, \dotsb, x^{(n)}_2),\dotsb, (x^{(1)}_d, x^{(2)}_d, \dotsb, x^{(n)}_d) (x1(1),x1(2),,x1(n)),(x2(1),x2(2),,x2(n)),,(xd(1),xd(2),,xd(n))

的方式重新进行寻址。 在 d d d 比较小的时候(我们经常使用矩阵作为运算对象), 这样的寻址方式非常简便。

a = np.array([[1,2], [3, 4], [5, 6]])

print(a[[0, 1, 2], [0, 1, 0]])  
[1, 4, 5]
a = np.array([[1,2,3], [4,5,6], [7,8,9], [10, 11, 12]])
b = np.array([0, 2, 0, 1])

print(a[np.arange(4), b])
[1, 6, 7, 11]

使用boolean矩阵寻址也是常用的方法。 如果是简单的判断条件, 可以直接写在方括号中。

Mathematical Manipulation

使用.dot 方法进行矩阵乘法, 而 ∗ * 用作同样大小矩阵的元素对应相乘。

像 v.dot(x) 这样的运算会返回一个新的实例, 不会直接改变 v 的值。

求和运算np.sum(mat, axis = d) 选定第 d d d 个维度进行求和。 如果axis = 1, 就返回同样的行数, 但是列数都变成了1.

Broadcasting

广播技术的简单概括: n n n 维和 m m m 维的tensor 做四则运算 ( n > m n>m n>m ), 要保证 m m m 维向量的低 n n n 维和 n n n 维向量每个维度的size 相同。

x = np.random.random((3,3,4,3,2))
y = np.random.random((3,2))
可以

x=np.random.random((3,3,4,3,2))
y = np.random.random((4,2))
不可

向量的outer product 是比较特殊的。

x = np.array([1,2,3])
y = np.array([1,2])

print(np.reshape(x, (3,1)) * y)
[[1 2]
 [2 4]
 [3 6]]

Image Processing

现在的Scipy版本中,已经从scipy.misc 中删除了imread, imsave, imresize 等内容。

现在可以从 imageio 库中 import imread, imsave, imwrite。

而 imresize 我们可以用numpy + PIL(pillow) 实现。

from PIL import Image
import numpy as np

# im = imresize(im, (size1, size2, ...))
im = np.array(Image.fromarray(im).resize((size1, size2, ...)))
im = imread("cat.png")
im = np.array(Image.fromarray(im).resize((300,300)))
imsave("cat1.png", im)
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_36284852/article/details/104952330

智能推荐

centos mysql 端口,CentOS 上mysql端口3306的问题-程序员宅基地

文章浏览阅读200次。CentOS 上mysql端口3306的问题今天装了一台Linux系统,以前都是RedHat,后来听说有Fedora了,一直没用过。正好项目里环境要用就想弄一个来玩玩,结果现在人家最新的是CentOS,就一张CD,其他的根据需要自己上网Down,(我不喜欢这样子就自己下载DVD版)。安装完之后没有图形界面,而且没有提示输入root密码,还得到单用户模式下修改。后来下载了一个图形界面,弄好之后在那个..._centos修改mysql端口tcp6:3306为tcp

PXE自动化安装CentOS 8_centos8 pxe boot arp timeout-程序员宅基地

文章浏览阅读6.6k次,点赞5次,收藏26次。安装前准备:关闭防火墙和SELINUX,DHCP服务器静态IP。切勿用桥接模式 最好是NET模式而且把自动分配DHCP对勾取消。查看防火墙和seelinux是否关闭[root@centos8 ~]#firewall-cmd --statenot running[root@centos8 ~]#getenforce Disabled安装对应的软件包安装syslinux的时候..._centos8 pxe boot arp timeout

R软件学习笔记-5(R软件画图)_箱尾图绘制函数用法-程序员宅基地

文章浏览阅读6.8k次,点赞4次,收藏32次。转自:http://www.dataguru.cn/article-2421-1.html摘要: 一、直方图 绘制直方图函数:hist()对x1进行直方图分析 hist(x$x1)二、散点图 散点图绘制函数:plot()探索各科成绩的关联关系 plot(x1,x2) plot(x$x1,x$x2)三、柱状图 列联表分析 列联函数table():统计每个分数的人 ...一、直方图_箱尾图绘制函数用法

Redis常用命令-程序员宅基地

文章浏览阅读783次。http://www.4wei.cn/archives/1002509Redis常用命令集1)连接操作命令quit:关闭连接(connection)auth:简单密码认证help cmd: 查看cmd帮助,例如:help quit2)持久化save:将数据同步保存到磁盘bgsave:将数据异步保存到磁盘lastsave:返回上次成功将数据保存到磁盘的Unix时戳shundo..._redis怎么使用vi

android.content.res.Resources$NotFoundException: Resource ID #0xfffffe6c (使用BaseRecyclerViewAdapt)-程序员宅基地

文章浏览阅读3.8k次。错误:android.content.res.Resources$NotFoundException: Resource ID #0xfffffe6c 意思是资源ID找不到。然后又在报错中出现跟BaseQuickAdapter相关信息,可以分为两个方面,第一个是在加载Adapter Item取控件的时候为空,第二个是加载不同View的时候为空。 View inflate = g..._android.content.res.resources$notfoundexception: resource id #0xfffffe6c

RPA认证 Developer UIPath Certificate,细说uipath认证学习,Online Quiz和Practical Exam项目详解-程序员宅基地

文章浏览阅读2.1w次,点赞11次,收藏61次。UIPath,RPA里算是比较简单易操作的一款软件了,因为公司业务的需要,代理uipath以及部署业务,所以接触到了uipath。从开始到最终做到企业项目部署,大概用了两个月的时间,收获不少。自己之前是做过后端开发,前端以及手机端软件自动化的相关开发工作(触动sprite…),所以学习起来挺快的。最终花了两周多的时间,阅读了官方的文档,uiapth官方的学院,以及第三方一些文档,完成了整个uipa..._uipath认证

随便推点

[源码解析] 机器学习参数服务器ps-lite 之(3) ----- 代理人Customer-程序员宅基地

文章浏览阅读469次。本文是参数服务器第三篇,介绍ps-lite的Customer模块。

卷积神经网络笔记--吴恩达深度学习课程笔记(四)_卷积神经 特征平面-程序员宅基地

文章浏览阅读2.8k次,点赞4次,收藏17次。各个知识点详解LeNet-5网络LetNet网络的的讲解主要参考1998年计算机科学家Yann LeCun发布的一篇论文《Gradient based learning applied to document-recognition》大家可以找到这篇论文结合学习,针对该网络,首先大家需要了解一下图像中的常用操作卷积,卷积这个词是信号处理领域的词,表示一个系统多数据处理的过程,在图像处理中的卷积,其实就是滤波器。下面先简要介绍一下卷积核的概念,这个不能细说,因为想要深入理解卷积需要很多知识,这里只给大家_卷积神经 特征平面

ANSYS无限大平板两边传热仿真_ansys热仿真-程序员宅基地

文章浏览阅读5.1k次,点赞4次,收藏20次。ANSYS无限大平板两边传热仿真有一无限大平板,导热系数为27.56,密度为591.8,密度为7800,厚度为1.08m,现将其划分为4层,5个温度节点,求分析其在两面不相等且温度变化的对流换热中的受热情况。对流换热系数为200。一、前处理器1、建立工程,改变工程名称2、选择处理热问题,勾选Thermal选项3、选择需要划分的节点类型,这里采用55节点若计算对称问题,则在o..._ansys热仿真

SpringBoot使用prometheus监控_spring security 只开启/actuator/promethues断点-程序员宅基地

文章浏览阅读3.1w次,点赞2次,收藏40次。本文介绍SpringBoot如何使用Prometheus配合Grafana监控。1.关于PrometheusPrometheus是一个根据应用的metrics来进行监控的开源工具。相信很多工程都在使用它来进行监控,有关详细介绍可以查看官网:https://prometheus.io/docs/introduction/overview/。2.有关GrafanaGrafana是一个开源监..._spring security 只开启/actuator/promethues断点

Redis数据结构_redis取值fet list-程序员宅基地

文章浏览阅读99次。redis是一种高级的key-value数据库存储系统 其中value值支持物种数据类型 ,key的数据类型一般都是String字符串类型:String散列类型:hash列表类型:list集合类型:set有序集合类型:sorted set对于redis的key值,如果定义的名称过长,查询效率就会降低,所以一般是按照规范命名就可以了。命令ping 就是连接是否成功 显示PONG就表示连接成功redis默认会在空间之中生成16个数据库,数据库编号以此从.._redis取值fet list

为什么在java中计算2的32次方可以用1L左移32表示_java中2的32次方如何表示-程序员宅基地

文章浏览阅读6.5k次。为什么在java中计算2的32次方可以用1L<<32表示 java中移位运算符<< : 左移运算符,num << 1,相当于num乘以2>> : 右移运算符,num >> 1,相当于num除以22的32次方,相当于32个2相乘1L<<32 ,不就是1乘以32个2 ,二者相等。<&_java中2的32次方如何表示

推荐文章

热门文章

相关标签