您当前的位置: 首页 >  Python

插件开发

暂无认证

  • 1浏览

    0关注

    492博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Python-模块系列-numpy库(二)-切片对象索引-整数索引-布尔索引-花式索引

插件开发 发布时间:2022-05-15 08:00:00 ,浏览量:1

  numpy库具有强大的n维数组矩阵运算能力,而且使用起来也是非常方便,数组可以基于 0 - n 的下标进行索引,切片对象可以通过内置的 slice 函数,并设置 start, stop 及 step 参数进行,从原数组中切割出一个新数组。也可以采用冒号的方式,构建切片对象,也可采用负号从倒数进行索引,范例源码如下所示:

import numpy as np
a = np.arange(100);
a.shape=(10,10);
print(a[:, 1])  # 第2列元素
print(a[1,:])   # 第2行元素
print(a[2:9:2,2:9:2])  # start, stop 及 step 参数 获取第3列到第6列 第3行到第6行的数据
print(a[:, 1:]) # 第2列及剩下的所有元素
print(a[:, :1]) # 第2列以前的所有元素
a[2:9:2,2:9:2]=np.zeros((4,4),np.int); #修改索引位置数据
print(a[:, -1]) # 倒数第一列数据
print(a[:, :-3]) # 倒数第3列之前的数据
print(a);

  【注意】 与matlab索引方式的差异,它采用的是start:stop:step顺序来构建切片对象。   除了以上整数索引方式,还有3种高级索引,分别是整数数组索引、布尔索引和花式索引,下面分别讲述一个例子,方便读者理解,   1.整数数组索引:对应的坐标放在数组里,然后在中括号内索引,例子如下所示:

import numpy as np
x = np.array([[  0,  1,  2],[  3,  4,  5],[  6,  7,  8],[  9,  10,  11]])
rows = np.array([0,0,3,3])
cols = np.array([0,2,0,2])
y = x[rows,cols]
print(y);

  2.布尔索引:通过布尔数组来过滤数组中的元素值,源码如下:

import numpy as np
x = np.arange(32).reshape((8, 4));
y=x[x>3]; #获取返回结果
print(y);
x[x>3]=0; #修改索引位置的值
print(x);

  【注意】经过布尔索引之后,返回值变为了一维数组。   3.花式索引:花式索引根据索引数组的值作为目标数组的某个轴的下标来取值。对于使用一维整型数组作为索引,如果目标是一维数组,那么索引的结果就是对应位置的元素;如果目标是二维数组,那么就是对应下标的行数据。

import numpy as np
x = np.arange(32).reshape((8, 4))
print(x[[3, 2, 1, 1]]) #对应行号的数据
关注
打赏
1665481431
查看更多评论
立即登录/注册

微信扫码登录

0.0417s