Python的numpy选择特定行列的方法

 更新时间:2023年08月24日 10:39:42   作者:goodxin_ie  
这篇文章主要介绍了Python的numpy选择特定行列的方法,有时需要抽取矩阵中特定行的特定列,比如,需要抽取矩阵x的0,1行的0,3列,结果为矩阵域,需要的朋友可以参考下

numpy选择特定行列

有时需要抽取矩阵中特定行的特定列。

比如,需要抽取矩阵x的0,1行的0,3列,结果为矩阵域

x = np.array([[ 0,  1,  2,  3],
               [ 4,  5,  6,  7],
               [ 8,  9, 10, 11],
               [12, 13, 14, 15]])
y = np.array([[ 0,  3],
              [ 4,  7]])

错误做法:第一反应这样写x[[0,1],[0,3]],然而得到的结果为

y
Out[22]: array([0, 7])

其实这种写法是抽去了[0,0],[1,3]两个位置的数。numpy的所有维度的坐标个数应该相等,且互相是配对的。

Numpy数组的整数数组索引,返回数据副本,而不是创建视图。相比切片索引,整数数组的索引更具有通用性,因为其不要求索引值具有特定规律。

整数数组索引要点如下:

  • 对于索引数组中未建立索引的维度(索引数组中的索引集数目小于被索引数组维度),默认被全部索引;
  • 索引结果数组的形状由索引数组的形状与被索引数组中所有未索引的维的形状串联组成,也就是说,若对数组的所有维度建立索引,则索引数组的形状等于结果数组的形状;
  • 若索引数组具有匹配的形状,即索引数组个数(索引集数)等于被索引数组的维度,此时结果数组与索引数组具有相同形状,且这些结果值对应于各维索引集的索引在索引数组中的位置;

正确的做法有以下几种:

1、先抽取行,再抽取列

 x[[0,1]][:,[0,3]]
Out[31]: 
array([[0, 3],
       [4, 7]])

2、由于结果数组与索引数组具有相同形状,且这些结果值对应于各维索引集的索引在索引数组中的位置,因此可以直接写目标数据的坐标

index = [[[0,0],[1,1]],[[0,3],[0,3]]]
x[index]
Out[33]: 
array([[0, 3],
       [4, 7]])

此种做法也可以利用numpy的广播机制,写为

x[[0,1],[[0],[3]]]
Out[39]: 
array([[0, 4],
       [3, 7]])

注意与开始的错误写法对比

3、Numpy提供的函数 ix_() 更快地实现索引指定行列

ix_(*args)
    Construct an open mesh from multiple sequences.
    This function takes N 1-D sequences and returns N outputs with N
    dimensions each, such that the shape is 1 in all but one dimension
    and the dimension with the non-unit shape value cycles through all
    N dimensions.
    Using `ix_` one can quickly construct index arrays that will index
    the cross product. ``a[np.ix_([1,3],[2,5])]`` returns the array
    ``[[a[1,2] a[1,5]], [a[3,2] a[3,5]]]``.

写法为:

i,j = np.ix_([0,1],[0,3]) 
x[i,j]
Out[44]: 
array([[0, 3],
       [4, 7]])

到此这篇关于Python的numpy选择特定行列的方法的文章就介绍到这了,更多相关numpy选择特定行列内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python+OpenCV绘制多instance的Mask图像

    Python+OpenCV绘制多instance的Mask图像

    Mask图像中,不同值表示不同的实例(instance)。本文将详细为大家讲讲如何利用OpenCV绘制多instance的Mask图像,感兴趣的可以学习一下
    2022-06-06
  • 浅谈python函数调用返回两个或多个变量的方法

    浅谈python函数调用返回两个或多个变量的方法

    今天小编就为大家分享一篇浅谈python函数调用返回两个或多个变量的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-01-01
  • Pycharm集成Gitee的使用方法

    Pycharm集成Gitee的使用方法

    本文主要介绍了Pycharm集成Gitee的使用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-07-07
  • Python自定义函数实现求两个数最大公约数、最小公倍数示例

    Python自定义函数实现求两个数最大公约数、最小公倍数示例

    这篇文章主要介绍了Python自定义函数实现求两个数最大公约数、最小公倍数,结合实例形式分析了Python求解两个数最大公约数与最小公倍数相关原理与算法实现技巧,需要的朋友可以参考下
    2018-05-05
  • matplotlib作图添加表格实例代码

    matplotlib作图添加表格实例代码

    这篇文章主要介绍了matplotlib作图添加表格实例代码,实例绘制了一个简单的折线图,并且在图中添加了一个表格,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下
    2018-01-01
  • Python实现双向RNN与堆叠的双向RNN的示例代码

    Python实现双向RNN与堆叠的双向RNN的示例代码

    这篇文章主要为大家详细介绍了如何利用Python语言实现双向RNN与堆叠的双向RNN,文中详细讲解了双向RNN与堆叠的双向RNN的原理及实现,需要的可以参考一下
    2022-07-07
  • python3连接MySQL8.0的两种方式

    python3连接MySQL8.0的两种方式

    这篇文章主要介绍了python3连接MySQL8.0的两种方式,本文通过多种方式给大家介绍的非常详细,代码附有文字注释,需要的朋友可以参考下
    2020-02-02
  • Python解析nc格式的文件

    Python解析nc格式的文件

    本文主要介绍了Python解析nc格式的文件,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-11-11
  • Python异常处理操作实例详解

    Python异常处理操作实例详解

    这篇文章主要介绍了Python异常处理操作,结合实例形式分析了Python异常处理的相关原理、操作语句与使用技巧,需要的朋友可以参考下
    2018-05-05
  • python定时检查某个进程是否已经关闭的方法

    python定时检查某个进程是否已经关闭的方法

    这篇文章主要介绍了python定时检查某个进程是否已经关闭的方法,涉及Python进程与时间的相关操作技巧,需要的朋友可以参考下
    2015-05-05

最新评论