python 索引方法 python中如何索引

一,基础索弓
在一维数组中,你可以使用中括号指定索引获取第i个值(从0开始计数),但是对于多维的数组,每个索引值对应的元素不再是一个数值,例如,在一个二维数组中,将得到一个以为数组。单个元素可以继续索引,或者传递一个索引的列表选择单个元素。

这种方式获取的数据为原数组的视图,对于视图数值的修改,也会修改原数组数值。
二·,切片索引
numpy切片与Python列表的标准切片语法相同,通过切片可以灵活地得到一个子数组。与基础索引一样,切片索引也是原数组的视图,修改数据也会作用于原数组。

切片索引有两个实用的应用:

1,获取数组的单行或者单列。

2,数组的逆序。

三,布尔索引
布尔索引主要是利用的布尔数组,当数组的比较操作(比如==、>=)也是可以向量化,这些比较运算的结果是个布尔数据类型的数组。该数组与原数组的长度和形状都是一致,我们可以获取到对应位置为True的值。

通过布尔索引获得的子数组为副本,修改后不影响原数组。

布尔数组操作
1.统计记录个数
如果需要统计布尔数组中True的个数,可以使用np.count nonzero函数

另一种方法是使用np.sum,False会被解释为0,而True被解释为1。sum()可以沿着行或列求和。

2.快速地检查是否包含True

3.python中的关键字and 和 or 对布尔数组不起作用,需要使用逐位逻辑运算符(&,1,^)当使用 and 或者 or 时,就等于让python将整个数组当作布尔对象:当使用&或者|时,表达式操作的是数组中的元素,每个元素逐位运算。

a and b之所以报错,是因为,无法知道a和b整个数组,分别是Ture还是False。没法进行and运算,可以使用np.aal() 或者 np.any()对整个数组进行判断。

四,数组索
数组索引在概念上很简单,通过一个数组来一次性获取多个元素

在使用数组索引时,有两个点需要注意:

1.使用数组索引,结果的形状不是与被索引的数组的形状一致。

2.操作重复的索引可以会产生一些出平意料的结果。

上面的代码执行后,x的结果为array([6.,0.,0.,0.,0..0..0..0..0.. 0.])

这里会有疑问,4去哪里了?其实上面的代码等同于赋值两次。

A=2,然后A=3,所以最后结果为3。

继续设想以下操作:

按照之前的想法,x[0]的输出结果应该的2,然而结果却是1。x[[0,0] +=1其实可以拆开为:x[0],x[0]= x[0]+1,x[0]+1,换个简单的例子:

a的结果为2,a,a=a+1,a+1的指向步骤是:
1,先计算等号右边的结果,(2.2)
2,将右边的结果赋给左边:a=2,a=2


在看一个例子:

a的结果为3,a,a=b,a+b的指向步骤是:
先计算等号右边的结果,(2,3)
将右边的结果赋给左边:a=2,a=3。


 

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值