今天继续学习一下Numpy库,废话不多说,整起走

先说下Numpy中,经常会犯错的地方,就是数据的复制

这个问题不仅仅是在numpy中有,其他地方也同样会出现

import numpy as np
a = np.arange(12)
b = a
print(b is a)
b.shape = 3,4
print(a.shape)
print(id(a))
print(id(b))

先看看这段代码,我们随便建立了一个numpy数组

然后我想把a这个值,赋值给b,很简单的操作,b = a

那么我们打印一下b和a是不相等,返回的结果为True

也就是说,b和a是相等的

那么我们现在讲b做个shape变换

然后在看看a的shape有没有变换

我们这里多打印些东西,更容易我们理解

我们看到a 的id,和b 的id 是一样的,说明a和b,是完全相等的

我改变其中任意一个,都是改变另外一个值。实际上a和b指向的都是内存中的同一个地址

我们接着看下面的代码

c = a.view()
print(c is a)
c.shape = 2,6
print(a.shape)
c[0,4] = 1234
print(a)
print(id(a))
print(id(c))

我这里 定义了一个c,这个c也是一种复制,浅复制。用view()

我们在看看c 是不是a,返回的结果则是,False,说明,a和c不相等

我们将c.shape变换为2,6

打印一下a.shape发现,a的shape还是3,4

那么我将c中的一个值,修改为1234

可以看到,打印出来的a也改变了

让后通过id发现, 他们两个不是同一个地址。但是我修改的时候会做修改

说明,用view()方法复制出来的数据,相当于python中的浅拷贝。

简单说,就是a和c他们指向的地址不一样,但是他们公用一组数据。

但是这个view不推荐使用

下面我们接着看

d = a.copy()
print(d is a)
d[0,0] = 9999
print(d)
print(a)

这里看到,d = a.copy(),a 不是d ,所以打印出来是False

那么我们让d 中的 一个元素变成9999

那么打印一下a和d 发现,a中没有变化,d中有变化,也就是说

如果我们想让一个变量,的初始值是a,然后在新的上面做一些变化的时候,一定要用copy来做

下面我们在说说argmax

data = np.sin(np.arange(20).reshape(5,4))
print(data)
ind = data.argmax(axis=0)
print(ind)
data_max = data[ind, range(data.shape[1])]
print(data_max)

这段代码可以看出,我们生成了一个5行 4列的矩阵。我们定义维度axis = 0 就是按照列进行选择

打印一下可以看到,第一列中0.98935825这个值是最大的。我们通过打印ind,得到最大的值是矩阵第一列的第3个元素

也就是元素下标为2,那么第二列中,第一个元素最大,下标为0,以此类推,得到[2 0 3 1]

按行找的话,需要设置维度axis = 1,即可

我们想取到,没列中,最大的数是多少,可以使用data_max这种取值方式,将矩阵中按照列排列最大的元素是多少,取出来

a = np.arange(0,40,10)
print(a)
b = np.tile(a,(4,2))
print(b)=

看到上面这段代码,我们生成一个向量

然后,通过tile函数,将我们生成的向量传入进去,让后按照矩阵进行翻倍变换

得到,4行2列的数据,下面继续

a = np.array([[4,3,5],[1,2,1]])
print(a)
b = np.sort(a, axis = 1)
print(b)
a.sort(axis = 1)
print('****************')
print(a)
a = np.array([4,3,1,2])
j = np.argsort(a)
print('***************')
print(j)
print('***************')
print(a[j])

首先我们使用sort,将我们的a进行了以行为主的排序

我们可以看到,使用np.sort和直接.sort的效果是一样的

np.argsort,则是求出a的索引值,然后再按照a的索引值进行排序

今天就先说到这里,感谢各位的阅读,感谢支持!!谢谢!!

Numpy库的学习(五)的更多相关文章

  1. Numpy库的学习(三)

    今天我们继续学习一下Numpy库的学习 废话不多说 ,开始讲 比如我们现在想创建一个0-14这样一个15位的数组 可以直接写,但是很麻烦,Numpy中就给我们了一个方便创建的方法 numpy中有一个a ...

  2. Numpy库的学习(四)

    我们今天继续学习一下Numpy库 接着前面几次讲的,Numpy中还有一些标准运算 a = np.arange(3) print(a) print(np.exp(a)) print(np.sqrt(a) ...

  3. Numpy库的学习(二)

    今天来继续学习一下Numpy库的使用 接着昨天的内容继续 在Numpy中,我们如果想要进行一个判断使用“==” 我们来看下面的代码 vector = np.array([5,10,15,20,25]) ...

  4. Numpy库的学习(一)

    今天来学习一下Python库中,支持高级大量的维度数组与矩阵运算的神奇的Numpy库 Numpy同时也对数组运算提供大量的数学函数,对于大量计算运行效率极好 是大量机器学习框架的基础库 废话不多说,直 ...

  5. numpy库的学习笔记

    一.ndarray 1.numpy 库处理的最基础数据类型是由同种元素构成的多维数组(ndarray),简称“数组”. 2.ndarray是一个多维数组的对象,ndarray数组一般要求所有元素类型相 ...

  6. Numpy库基础___五

    Numpy数据存取 •NumPy的随机数函数 a = np.random.rand(1,2,3) print(a) #[[[0.03339719 0.72784732 0.47527802] # [0 ...

  7. python的numpy库的学习

    1.创建 array(序列类型).asarray.arange.ones.ones_like.zeros.zeros_like.empty.empty_like.eye.identity 2.运算 两 ...

  8. Python Pandas库的学习(一)

    今天我们来学习一下Pandas库,前面我们讲了Numpy库的学习 接下来我们学习一下比较重要的库Pandas库,这个库比Numpy库还重要 Pandas库是在Numpy库上进行了封装,相当于高级Num ...

  9. 【python】numpy库和matplotlib库学习笔记

    Numpy库 numpy:科学计算包,支持N维数组运算.处理大型矩阵.成熟的广播函数库.矢量运算.线性代数.傅里叶变换.随机数生成,并可与C++/Fortran语言无缝结合.树莓派Python v3默 ...

随机推荐

  1. Python:requests:详解超时和重试

    网络请求不可避免会遇上请求超时的情况,在 requests 中,如果不设置你的程序可能会永远失去响应.超时又可分为连接超时和读取超时. 连接超时 连接超时指的是在你的客户端实现到远端机器端口的连接时( ...

  2. 3.JAVA-方法重载,类的封装,构造/析构方法

    1.方法重载 和C++的函数重载一样,主要是实现多个相同的函数名,但是参数表不同. 参数表不同主要有以下几种 1) 参数个数不同 2) 参数类型不同 3) 参数顺序不同 2.类和对象 类class 用 ...

  3. Odoo开源智造IT经理人创业圆梦计划正式启动

    概念定义 IT经理人创业圆梦计划是什么? 甲方IT经理人的行业背景 + 其他甲方需求及可靠信任的线索资源 = 自主创业圆梦计划 具体措施 甲方IT经理人的职业行业背景取得其他甲方需求线索及信任——通过 ...

  4. CenOS_文件目录类操作命令

    1.pwd 基本语法: pwd (功能描述:显示当前工作目录的绝对路径) 2.ls 基本语法: ls [选项] [目录或是文件] 常用选项: -a :显示当前目录所有的文件和目录,包括隐藏的. -l ...

  5. window下编译jcef

    自行编译jcef过程中遇到了一些问题,现在记录如下. 参考的主要文章是jcef的官方介绍: https://bitbucket.org/chromiumembedded/java-cef/wiki/B ...

  6. ReactiveSwift源码解析(六) SignalProtocol的take(first)与collect()延展实现

    上篇博客我们聊了observe().map().filter()延展函数的具体实现方式以及使用方式.我们在之前的博客中已经聊过,Signal的主要功能是位于SignalProtocol的协议延展中的, ...

  7. Mac电脑上一款非常时尚高清的动态壁纸Living Wallpaper HD

    很多朋友Mac电脑上都喜欢用动态壁纸,Living Wallpaper HD是本人尝试的一款非常不错的高清动态壁纸.有时钟.天气等各种组建,非常时尚美观. Living Wallpaper HD下载地 ...

  8. js node.js 编写命令工具demo

    1 创建文件夹cli-demo 2 执行npm init  3 创建cli.js 文件 内容如下: //js文件变成可执行文件 #!/usr/bin/env node console.log(&quo ...

  9. spring设计模式_代理模式

    代理模式应该是Spring核心设计模式之一了 先说下代理模式特性: 1.有代理人和被代理人 2.对于被代理的人来说,这件事情是一定要做的,但是我又不想做,所有就找代理人来做. 3.需要获取到被代理人的 ...

  10. 又拍云张聪:OpenResty 动态流控的几种姿势

    2019 年 1 月 12 日,由又拍云.OpenResty 中国社区主办的 OpenResty × Open Talk 全国巡回沙龙·深圳站圆满结束,又拍云首席架构师张聪在活动上做了< Ope ...