永发信息网

如何从数组的指定索引开始提取4位数据赋值

答案:1  悬赏:70  手机版
解决时间 2021-11-26 18:51
如何从数组的指定索引开始提取4位数据赋值
最佳答案
在numpy的ndarray类型中,似乎没有直接返回特定索引的方法,我只找到了where函数,但是where函数对于寻找某个特定值对应的索引很有用,对于返回一定区间内值的索引不是很有效,至少我没有弄明白应该如何操作。下面先说一下where函数的用法吧。
(1)where函数的使用场景:
例如现在我生成了一个数组:
import numpy as np

arr=np.array([1,1,1,134,45,3,46,45,65,3,23424,234,12,12,3,546,1,2])

现在arr是一个含有18个元素的ndarray类型的数组,后面就用数组来称呼它吧。假如我想返回数组中所有元素值为3所对应的索引位置,那么通过where函数可以很轻松地完成。
print np.where(arr==3)

它会返回一个包含所有值为3对应的索引位置的元组,如下图:

可以看到在索引为5、9、14的地方所对应的元素值为3。通过这样的方式可以轻松达到目的。但是对于一定变化范围内的索引这样就不行了。下面的方法是自己想出来的折衷办法,比较笨,高手清喷。
(2)通过一个辅助的数组来解决一定范围内值索引的查找
我们建一个标识元素索引的数组,然后通过它来显示符合条件的元素对应的索引。还是刚才的数组,假如我现在要返回元素值在3到100之间值的索引。我可以生成一个和arr相同大小的数组,然后首先通过一次筛选找到大于3的元素对应索引的数组,继而在其中再次筛选,最终得到想要的结果。代码如下:
b=np.arange(len(arr))#生成和arr相同长度的数组
c=b[arr>3]#c存放的就是arr中大于3的元素对应的索引
#最后通过遍历c数组,选择3到100之间的值打印出来
for i in range(len(c)):
if arr[c[i]]<100:
print c[i],

下面看一下执行的效果:

可以看到程序将所有介于3和100之间的元素对应的索引值打了出来,如果想同时获得索引值和相应的元素,只需将上面的“print c[i]”,  替换为 “print c[i],arr[c[i]]”即可。 当然这种方法也适用于选择某个特定值对应的索引,例如我想找到所有3对应的位置,可以用print b[arr==3]即可打印出所有值为3的元素所对应的索引。其实不论怎么做,都是用到了数组进行关系运算后生成布尔数组,然后让数组中为True的地方进行显示。
可以看到程序将所有介于3和100之间的元素对应的索引值打了出来,如果想同时获得索引值和相应的元素,只需将上面的“print c[i]”,  替换为 “print c[i],arr[c[i]]”即可。
当然这种方法也适用于选择某个特定值对应的索引,例如我想找到所有3对应的位置,可以用print b[arr==3]即可打印出所有值为3的元素所对应的索引。其实不论怎么做,都是用到了数组进行关系运算后生成布尔数组,然后让数组中为True的地方进行显示。
当然还可以通过两次进行筛选,分别筛选出大于3的元素和小于100的元素对应的索引数组,然后两个数组做交集处理,在numpy中有一个intersect1d函数可以进行这样的运算,但是仍然麻烦。目前只能想到这些办法,不知道有哪位高手有更好的方法,欢迎大家一起交流一下。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
苹果8售后换屏幕多少钱
牙贴和冷光美白哪个效果更好?
昨天我的流量显示超了,怎么还有20兆啊,到底
丽水名都怎么样?好不好?值不值得买?
十二点十五到二十三点十五是几个小时
广数988t卡盘加紧松开代码跪求
every day some people ask mr brown的答案是
在地税开房屋租赁的发票税点是多少
试探和考验是不是一个意思?
朋友给我发了这首诗,我不是太理解其含义,我
长350 宽250 高250 单位毫米 面积是多少
管家乐装饰材料总汇地址好找么,我有些事要过
国内到底还有没有情降师傅的存在。情降真的是
窗外 作文800字
136.66吨等于多少千克多少吨
推荐资讯
日产奇骏2.5 L百公里多少油
k337途经安阳不,能从安阳坐上不?
这道题怎么做:设飞机起飞时的速度必
马桶松压杆螺母在哪
这个图形什么意思
中国联通(煌固营业厅)地址在什么地方,我要处
马嘉悦生日快乐的藏头诗
钓鱼知识:钓鱼人必须掌握的几个自制饵料配方
求HP同人《追寻巅峰》全本,TXT格式
手机拍照可以显示时间吗就是显示在照片上
运动员400米训练的计划
120#白电油国标是什么标准
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?