>>> import numpy as np
>>> a = np.random.randint(10,size=(5,5))
>>> a
array([[0, 8, 3, 0, 2],
[0, 6, 6, 6, 3],
[0, 3, 6, 8, 7],
[2, 6, 1, 4, 4],
[4, 1, 5, 6, 4]])

1. 数组切片

随机生成5x5的一个矩阵

提取矩阵第n列

>>> a[:,3]
array([0, 6, 8, 4, 6])

提取矩阵第n行

>>> a[3,:]
array([2, 6, 1, 4, 4])

提取矩阵第n行到第n+m行

>>> a[1:4]
array([[0, 6, 6, 6, 3],
[0, 3, 6, 8, 7],
[2, 6, 1, 4, 4]])

提取矩阵第n行到第n+m列

>>> a[:,1:4]
array([[8, 3, 0],
[6, 6, 6],
[3, 6, 8],
[6, 1, 4],
[1, 5, 6]])

使用布尔数组选取数据集中大于4的数字

>>> a[a>4]
array([8, 6, 6, 6, 6, 8, 7, 6, 5, 6])

使用布尔数组选取数据集中第二列大于3的数字所在的行

>>> a[a[:,1]>3]
array([[0, 8, 3, 0, 2],
[0, 6, 6, 6, 3],
[2, 6, 1, 4, 4]])

使用布尔数组选取数据集中第二列等于3的数字所在的行

>>> a[a[:,1]==6]
array([[0, 6, 6, 6, 3],
[2, 6, 1, 4, 4]])

使用布尔数组设置值,把数组a中小于4的值都设置为0

>>> a[a<4]=0
>>> a
array([[0, 8, 0, 0, 0],
[0, 6, 6, 6, 0],
[0, 0, 6, 8, 7],
[0, 6, 0, 4, 4],
[4, 0, 5, 6, 4]])

使用一维布尔数组设置整行或列:把第一列中含有数字6的行,全部设置为7

>>> a[a[:,1]==6]=7
>>> a
array([[0, 8, 3, 0, 2],
[7, 7, 7, 7, 7],
[0, 3, 6, 8, 7],
[7, 7, 7, 7, 7],
[4, 1, 5, 6, 4]])

取特定顺序行的数组,通过传递一个列表或整形ndarray来指定想要的顺序

>>> a[[1,3,4]]
array([[7, 7, 7, 7, 7],
[7, 7, 7, 7, 7],
[4, 1, 5, 6, 4]])

2.数组索引

返回array中数字6的索引值

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

返回的是一个tuple,第一个代表的是按列查找的索引值,第二个代表的是按行查找的索引值

类似的

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

返回的是一个array

3.类型转换

类型转换

>>> a.astype(np.float)
array([[0., 8., 3., 0., 2.],
[0., 6., 6., 6., 3.],
[0., 3., 6., 8., 7.],
[2., 6., 1., 4., 4.],
[4., 1., 5., 6., 4.]])
>>> a.astype(np.str)
array([['0', '8', '3', '0', '2'],
['0', '6', '6', '6', '3'],
['0', '3', '6', '8', '7'],
['2', '6', '1', '4', '4'],
['4', '1', '5', '6', '4']], dtype='<U21')

数组和纯量之间的操作

>>> a*a
array([[ 0, 64, 9, 0, 4],
[ 0, 36, 36, 36, 9],
[ 0, 9, 36, 64, 49],
[ 4, 36, 1, 16, 16],
[16, 1, 25, 36, 16]])
>>> a-a
array([[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0]])

纯量的算术操就是把操作值作用于每一个元素

>>> a-3
array([[-3, 5, 0, -3, -1],
[-3, 3, 3, 3, 0],
[-3, 0, 3, 5, 4],
[-1, 3, -2, 1, 1],
[ 1, -2, 2, 3, 1]])
>>> a*3
array([[ 0, 24, 9, 0, 6],
[ 0, 18, 18, 18, 9],
[ 0, 9, 18, 24, 21],
[ 6, 18, 3, 12, 12],
[12, 3, 15, 18, 12]])

Numpy 对于矩阵的操作持续更新的更多相关文章

  1. NumPy速查笔记(持续更新中)

    目录 1 总览 2 ndarray 3 常用API 3.1 创建ndarray (1)将Python类似数组的对象转化成Numpy数组 (2)numpy内置的数组创建 (3)从磁盘中读取标准格式或者自 ...

  2. MySQL日常运维操作---持续更新

    1.查看当前连接数: 这些参数都是什么意思呢? Threads_cached ##mysql管理的线程池中还有多少可以被复用的资源 Threads_connected ##打开的连接数 Threads ...

  3. js 常用操作 -- 持续更新

    替换数组中某一元素: array.splice(2, 1, '哈哈'); // 2 表示指定数组中2下标元素,1表示要删除的项数,哈哈 是替换后的值 在数组中某元素之前增加元素: array.spli ...

  4. jgGrid常用操作--持续更新

    最近有使用到jqGrid框架,有个需求是单击某个字段,比如name,然后把id带过去执行一个function,网上有说用线获取选中行,然后再得到id的方法,此方法经实验,必须要先选中才行,在用户没有进 ...

  5. Swift字符串操作-持续更新-2022

    Swift字符串追加 var str = "OC" str.append(" Swfit") print(str) // 输出结果: OC Swift 输出结果 ...

  6. 【oracle笔记1】基础知识大集锦:增删改,数据类型,用户操作,持续更新中···

    什么是数据库?数据库就是用来存储和管理数据的仓库.首先我来简单介绍一下各数据库的背景,常见的数据库如下,oracle:甲骨文公司(市场占用率最高),oracle也是一个公司名,翻译过来就是甲骨文的意思 ...

  7. 前端深入之js篇丨Array数组操作从入门到成神Up Up Up,持续更新中

    写在前面 随着前端深入的不断学习,发现数组这个数据结构在前端中有着相当大的存在感,由于我初学前端的时候并没有系统性的学习数组,所以我将通过这篇文章同你一起学习数组,希望我们能一起进步,学会熟练操作数组 ...

  8. PTA|团体程序设计天梯赛-练习题目题解锦集(C/C++)(持续更新中……)

    PTA|团体程序设计天梯赛-练习题目题解锦集(持续更新中) 实现语言:C/C++:      欢迎各位看官交流讨论.指导题解错误:或者分享更快的方法!! 题目链接:https://pintia.cn/ ...

  9. 值得学习的C/C++开源项目 持续更新

    值得学习的C语言开源项目 持续更新 文章目录 值得学习的C语言开源项目 持续更新 - 1. Webbench - 2. Tinyhttpd - 3. cJSON - 4. CMockery - 5. ...

随机推荐

  1. Codeforces Round #703 (Div. 2) (A~E)

    A. Shifting Stacks 题目链接 点我跳转 题目大意 给定 \(N\) 个土堆,第 \(i\) 个土堆有 \(Ai\) 个木块 你可以将第 \(i\) 个土堆的木块转移至第 \(i + ...

  2. Python数据结构与算法_回文数(03)

    判断一个整数是否是回文数.回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数. 示例 1: 输入: 121输出: true 示例 2: 输入: -121输出: false解释: 从左向右读, ...

  3. C++实现String类

    1 #include<iostream> 2 #include<cstring> 3 4 class String 5 { 6 public: 7 String(); 8 St ...

  4. 下载com.springsource.org.aspectj.weaver-1.6.8.RELEASE.jar

    看别人都说在repo.maven.com下载,没想到竟然要登录 索性我直接在国内阿里云的镜像仓库下载好了,速度又快又方便 搜索aspectj 下载地址:https://maven.aliyun.com ...

  5. 按照阿里巴巴规范创建Java线程池

    前言 Executors Executors 是一个Java中的工具类.提供工厂方法来创建不同类型的线程池. 常用方法: 1.newSingleThreadExecutor   介绍:创建一个单线程的 ...

  6. C#日志使用

    本文参考链接 日志框架 框架选择:NLog 安装方法,Nuget命令行:Install-Package NLog 常用规则 尽量不要在循环中打印日志. 应输出错误的堆栈信息:e.Message仅为异常 ...

  7. Java RPC 框架 Solon 1.3.9 发布,更便利的支持

    Solon 是一个微型的Java RPC开发框架.项目从2018年启动以来,参考过大量前人作品:历时两年,4000多次的commit:内核保持0.1m的身材,超高的跑分,良好的使用体验.支持:RPC. ...

  8. 40. 组合总和 II + 递归 + 回溯 + 记录路径

    40. 组合总和 II LeetCode_40 题目描述 题解分析 此题和 39. 组合总和 + 递归 + 回溯 + 存储路径很像,只不过题目修改了一下. 题解的关键是首先将候选数组进行排序,然后记录 ...

  9. CentOS安装libxml2报undefined reference to `gzopen64'

    主要是记录一下安装时候踩的坑 CentOS在make libxml2的时候,会报这个错误 ./.libs/libxml2.so: undefined reference to `gzopen64' c ...

  10. pytorch(01)环境配置及安装

    pytorch pytorch定位:深度学习框架 人工智能:多领域交叉科学技术 机器学习:计算机智能决策算法 深度学习:高效的机器学习算法 pytorch实现模型训练需要5个模块 数据 将数据从硬盘读 ...