zoukankan      html  css  js  c++  java
  • Numpy 对于矩阵的操作持续更新

    >>> 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]])
  • 相关阅读:
    广义mandelbrot集,使用python的matplotlib绘制,支持放大缩小
    cs229 斯坦福机器学习笔记(一)-- 入门与LR模型
    Scrapy研究探索(三)——Scrapy核心架构与代码执行分析
    matlab各类数据l图像之间的转化
    开源重磅,java内容管理系统CMS,点击就可以编辑,保存,轻松构建自己的站点
    Android4.4 ContentResolver查询图片无效 及 图库删除 添加图片后,ContentResolver不更新的问题解决
    03002_MySQL数据库的安装和配置
    [.Net Core] 简单使用 Mvc 内置的 Ioc
    Asp.Net MVC中Action跳转
    EF的增删改查
  • 原文地址:https://www.cnblogs.com/laozhanghahaha/p/8594145.html
Copyright © 2011-2022 走看看