numpy的基础运算中还有很多运算,我们这里再记录一些。

最小/大值索引

前面一篇博文中我们讲述过如何获得数组中的最小值,这里我们获得最小/大值的索引值,也就是这个最小/大值在整个数组中位于第几位。

import numpy as np
a = np.array([[10, 30, 15],
[20, 5, 25]])
print("a=")
print(a) print("最小值索引:", a.argmin())
print("最大值索引:", np.argmax(a))

输出为:

a=
[[10 30 15]
[20 5 25]]
最小值索引: 4
最大值索引: 1

这就意味着这里最小值的索引号是4,也就是数组中第4位的值,也就是数值5。

平均值

import numpy as np
a = np.array([[10, 30, 15],
[20, 5, 25]])
print("a=")
print(a) print("平均值:", a.mean())

输出为:

a=
[[10 30 15]
[20 5 25]]
平均值: 17.5

我们也可以通过axis参数来指定到底是在行上的平均值还是列上的平均值。

例如,我们使用axis=1来指示行上的平均值:

import numpy as np
a = np.array([[10, 30, 15],
[20, 5, 25]])
print("a=")
print(a) print("行平均值:", a.mean(axis=1))

输出为:

a=
[[10 30 15]
[20 5 25]]
行平均值: [ 18.33333333 16.66666667]

累积求和

import numpy as np
a = np.array([10, 30, 15, 20, 5, 25])
print("a=")
print(a) print("累积求和:", a.cumsum())

输出:

a=
[10 30 15 20 5 25]
累积求和: [ 10 40 55 75 80 105]

累差

import numpy as np
a = np.array([4, 6, 9, 1, 9])
print("a=")
print(a) print("累差:", np.diff(a))

输出:

a=
[4 6 9 1 9]
累差: [ 2 3 -8 8]

输出结果就是后一个元素的值减去前一个元素的值,最终元素的个数少1。

找出非0的数

import numpy as np
a = np.array([[4, 0, 9],
[1, 0, 8]])
print("a=")
print(a) print("找出非零的数:", np.nonzero(a))

输出为:

a=
[[4 0 9]
[1 0 8]]
找出非零的数: (array([0, 0, 1, 1], dtype=int64), array([0, 2, 0, 2], dtype=int64))

在上述的输出结果中表示的非0数是相应的索引位置,因为我们是二维数组,所以结果有两段,第一段表示某一维中的索引号,另一段表示的是另一维的索引号。

具体解读为其中的非零值位于:(0, 0), (0, 2), (1, 0), (1, 2)

也就是其中数字4、9、1、8所在的索引位置。

排序

import numpy as np
a = np.array([[4, 0, 9],
[1, 0, 8]])
print("a=")
print(a) print("排序结果:")
print(np.sort(a))

输出:

a=
[[4 0 9]
[1 0 8]]
排序结果:
[[0 4 9]
[0 1 8]]

转置矩阵

转置矩阵就是把行变成列,列变成行。例如:

import numpy as np
a = np.array([[4, 0, 9],
[1, 0, 8]])
print("a=")
print(a) print("转置矩阵:")
print(np.transpose(a))

输出为:

a=
[[4 0 9]
[1 0 8]]
转置矩阵:
[[4 1]
[0 0]
[9 8]]

也可以用简写的方式:a.T,这个读者自己去试试吧。

截取矩阵中的数据

把矩阵中的数改变成只属于某个数据范围内的数,例如:

import numpy as np
a = np.array([[4, 6, 9],
[1, 7, 8]])
print("a=")
print(a) print("np.clip:")
print(np.clip(a, 3, 7))

输出为:

a=
[[4 6 9]
[1 7 8]]
np.clip:
[[4 6 7]
[3 7 7]]

这样就把其中的元素都设置成了3到7的范围之内的数,比3小的数被修改成了3,比7大的数被修改成了7。

numpy的基础运算2-【老鱼学numpy】的更多相关文章

  1. numpy的基础运算-【老鱼学numpy】

    概述 本节主要讲解numpy数组的加减乘除四则运算. np.array()返回的是numpy的数组,官方称为:ndarray,也就是N维数组对象(矩阵),N-dimensional array obj ...

  2. numpy有什么用【老鱼学numpy】

    老鱼为了跟上时代潮流,也开始入门人工智能.机器学习了,瞬时觉得自己有点高大上了:). 从机器学习的实用系列出发,我们会以numpy => pandas => scikit-learn =& ...

  3. numpy的array合并-【老鱼学numpy】

    概述 本节主要讲述如何把两个数组按照行或列进行合并. 按行进行上下合并 例如: import numpy as np a = np.array([1, 1, 1]) b = np.array([2, ...

  4. numpy array的复制-【老鱼学numpy】

    对象的引用 看例子: a = np.array([0, 1, 2, 3]) b = a a[0] = 5 print("b=", b) # 判断a和b是否是同样的地址 print( ...

  5. python开发环境搭建及numpy基本属性-【老鱼学numpy】

    目的 本节我们将介绍如何搭建python的开发环境以及numpy的基本属性,这样可以检验我们的numpy是否安装正确了. python开发环境的搭建 工欲善其事必先利其器,我用得比较顺手的是Intel ...

  6. numpy安装-【老鱼学numpy】

    要玩numpy,就得要安装numpy. 安装python 3.6.3 64位 首先需要安装python,安装python的具体方法这里就不细讲了. 可以到官网上下载相应的python版本就可以了,目前 ...

  7. numpy创建array【老鱼学numpy】

    在上一篇文章中,我们已经看到了如何通过numpy创建numpy中的数组,这里再重复一下: import numpy as np # 数组 a = [[1, 2, 3], [4, 5, 6]] prin ...

  8. numpy的索引-【老鱼学numpy】

    简单的索引值 import numpy as np a = np.arange(3, 15).reshape(3, 4) print("a=") print(a) print(&q ...

  9. numpy array分割-【老鱼学numpy】

    有合并,就有分割. 本节主要讲述如何通过numpy对数组进行横向/纵向分割. 横向/纵向分割数组 首先创建一个6行4列的数组,然后我们对此数组按照横向进行切割,分成3块,这样每块应该有2行,见例子: ...

随机推荐

  1. Linux 学习 (三) 文件搜索命令

    Linux达人养成计划 I 学习笔记 locate 文件名 搜索速度比较快 只能根据文件名搜索 搜索的是保存在 /var/lib/mlocate 的数据库(每天更新一次) 新建文件需要执行 updat ...

  2. AtCoder Beginner Contest 122 D - We Like AGC(DP)

    题目链接 思路自西瓜and大佬博客:https://www.cnblogs.com/henry-1202/p/10590327.html#_label3 数据范围小 可直接dp f[i][j][a][ ...

  3. 字符串格式的方法%s、format和python3.6新特性f-string和类型注解

    一.%s msg = '我叫%s,今年%s,性别%s' %('帅哥',18,'男') print(msg) # 我叫帅哥,今年18,性别男 二.format # 三种方式: # 第一种:按顺序接收参数 ...

  4. MySQL——修改数据库远程权限

    语句 赋予权限 ON *.*前一个*代表库后一个代表表 GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'xxxxx' WITH GRA ...

  5. HDU6278 Just h-index

    主席树+二分 每次对给定区间从1-区间长度len二分mid,查询区间内第mid大的数是不是大于等于mid.. #include <bits/stdc++.h> #define INF 0x ...

  6. 在Magento 2中创建管理员菜单

    在Magento 2中创建管理员菜单 第1步:创建menu.xml 第2步:添加菜单项 第3步:刷新Magento缓存 第1步:创建menu.xml 创建名为:menu.xml文件的管理菜单文件 ap ...

  7. 【并发编程】【JDK源码】J.U.C--AQS 及其同步组件(2/2)

    原文:慕课网高并发实战(七)- J.U.C之AQS 在[并发编程][JDK源码]AQS (AbstractQueuedSynchronizer)(1/2)中简要介绍了AQS的概念和基本原理,下面继续对 ...

  8. google vimium插件的一些简单命令

    j: 向下滑动 k: 向上滑动 d: 向下一页 u: 向上一页 x: 关闭页面 r: 刷新页面 gg: 回到顶部 yy: 复制网址 t: 打开新标签 f: 显示页内指令 yt: 复制当前网址并打开 o ...

  9. 洛谷P2120 [ZJOI2007]仓库建设 斜率优化DP

    做的第一道斜率优化\(DP\)QwQ 原题链接1/原题链接2 首先考虑\(O(n^2)\)的做法:设\(f[i]\)表示在\(i\)处建仓库的最小费用,则有转移方程: \(f[i]=min\{f[j] ...

  10. GWAS文献解读:The stability of educational achievement across school years is largely explained by genetic factors

    方法 从NPD(英国数据库,收集有关学生在学年中学业成绩的数据)和TEDS(英国国家课程指南报告成绩数据库,由国家教育研究基金会和资格与课程管理局制定标准化核心学术课程)数据库获得双胞胎的学业成绩数据 ...