亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Python:在幾種情況下查找數組的索引

Python:在幾種情況下查找數組的索引

MMTTMM 2021-03-20 23:19:20
我有以下問題。有兩個n維整數數組,我需要確定滿足多個條件的項目的索引。該索引應在“ array1”中包含一個負數元素。在這個帶有負元素的子集中,它的值應該在“ array2”中最小。如果是平局,請選擇“ array1”中具有最小值的值(否則,請選擇第一個)因此,假設我們有:array1 = np.array([1,-1,-2])array2 = np.array([0,1,1])然后,它應該返回索引2(第三個數字)。我正在嘗試如下編程:import numpy as npn = 3array1 = np.array([1,-1,-2])array2 = np.array([0,1,1])indices = [i for i in range(n) if array1[i]<0] indices2 = [i for i in indices if array2[i] == min(array2[indices])] index = [i for i in indices2 if array1[i] == min(array1[indices2])][0] #[0] breaks the tie.這似乎可行,但是,我覺得它不是很優雅。在我看來,您應該可以在一兩行中定義較少的新變量來完成此操作。有人提出改善建議嗎?提前致謝。
查看完整描述

3 回答

?
aluckdog

TA貢獻1847條經驗 獲得超7個贊

我對numpy不太了解(盡管顯然我應該認真研究一下),所以這是一個簡單的python解決方案

sorted([(y, x, index) for (index, (x, y)) in enumerate(zip(array1, array2)) if x < 0])

將為您提供來自array2,array1的元素的三元組,如果是平局,則索引按array2中的值排序,按array1中的值排序,如果平局,則索引

第一個要素是您要尋找的東西。得到以下結果:

[(1, -2, 2), (1, -1, 1)]

因此,索引為2,并通過 [0][2]


查看完整回答
反對 回復 2021-03-24
?
瀟湘沐

TA貢獻1816條經驗 獲得超6個贊

您可以使用以下命令從array1獲取所有負元素的索引:

np.where(array1 < 0)

那么您可以通過以下方式訪問該子集:

subset = array2[array1 < 0]

要獲取array1的最?。ㄘ摚┲档乃饕梢允褂胊rray1.argmin()

value = array2[array1.argmin()]

放在一起給你:

value = array2[array1 < 0][array1[array1 < 0].argmin()]

但是如果array1僅具有正值,則必須捕獲ValueErrors。


查看完整回答
反對 回復 2021-03-24
?
至尊寶的傳說

TA貢獻1789條經驗 獲得超10個贊

索引在“ array1”中應該有一個負數

indices_1 = np.argwhere(array1 < 0)

在這個帶有負元素的子集中,它的值應該在“ array2”中最小。

indices_2 = array2[indices_1].argmin()

如果是平局,請選擇“ array1”中具有最小值的值(否則,請選擇第一個)

array1[indices_2].argmin()


查看完整回答
反對 回復 2021-03-24
  • 3 回答
  • 0 關注
  • 329 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號