亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

numpy中實現ndarray數組返回符合特定條件的索引方法

發布時間:2020-09-15 16:55:25 來源:腳本之家 閱讀:344 作者:wen123qiang 欄目:開發技術

在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對應的索引位置的元組,如下圖:

numpy中實現ndarray數組返回符合特定條件的索引方法

可以看到在索引為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], 

下面看一下執行的效果:

numpy中實現ndarray數組返回符合特定條件的索引方法

可以看到程序將所有介于3和100之間的元素對應的索引值打了出來,如果想同時獲得索引值和相應的元素,只需將上面的“print c[i]”, 替換為 “print c[i],arr[c[i]]”即可。

當然這種方法也適用于選擇某個特定值對應的索引,例如我想找到所有3對應的位置,可以用print b[arr==3]即可打印出所有值為3的元素所對應的索引。其實不論怎么做,都是用到了數組進行關系運算后生成布爾數組,然后讓數組中為True的地方進行顯示。

當然還可以通過兩次進行篩選,分別篩選出大于3的元素和小于100的元素對應的索引數組,然后兩個數組做交集處理,在numpy中有一個intersect1d函數可以進行這樣的運算,但是仍然麻煩。目前只能想到這些辦法,不知道有哪位高手有更好的方法,歡迎大家一起交流一下。

以上這篇numpy中實現ndarray數組返回符合特定條件的索引方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

荣昌县| 连城县| 铜陵市| 横峰县| 库车县| 景谷| 札达县| 岑溪市| 江陵县| 武义县| 大关县| 鄂州市| 高陵县| 塔河县| 重庆市| 南城县| 永顺县| 永靖县| 盐城市| 丰顺县| 台中市| 铁岭县| 阜阳市| 吉安市| 松溪县| 建瓯市| 运城市| 澜沧| 昭苏县| 共和县| 罗甸县| 宜君县| 浠水县| 肥东县| 兰州市| 伊吾县| 浏阳市| 富裕县| 普安县| 尤溪县| 临洮县|