web-dev-qa-db-ja.com

Rはwhich =)とwhich.min()がPython

同様のトピック here を読みました。質問が異なるか、少なくとも.index()が私の問題を解決できなかったと思います。

これはRの簡単なコードとその答えです。

x <- c(1:4, 0:5, 11)
x
#[1]  1  2  3  4  0  1  2  3  4  5 11
which(x==2)
# [1] 2 7
min(which(x==2))
# [1] 2
which.min(x)
#[1] 5

条件に一致するアイテムのインデックスを返すだけです。

xがPythonの入力である場合、基準を満たす要素のインデックスを取得するにはどうすればよいですかx==2および配列内で最小のものwhich.min

x = [1,2,3,4,0,1,2,3,4,11] 
x=np.array(x)
x[x>2].index()
##'numpy.ndarray' object has no attribute 'index'
11
Hadij

Numpyには組み込み関数があります

x = [1,2,3,4,0,1,2,3,4,11] 
x=np.array(x)
np.where(x == 2)
np.min(np.where(x==2))
np.argmin(x)

np.where(x == 2)
Out[9]: (array([1, 6], dtype=int64),)

np.min(np.where(x==2))
Out[10]: 1

np.argmin(x)
Out[11]: 4
17
erocoar

簡単なループでできます:

res = []
x = [1,2,3,4,0,1,2,3,4,11] 
for i in range(len(x)):
    if check_condition(x[i]):
        res.append(i)

理解できる1つのライナー:

res = [i for i, v in enumerate(x) if check_condition(v)]

ここに live example があります

4
Netwave

python indexing and numpy、これは最小値/最大値のインデックスに基づいて目的の列の値を返す

df.iloc[np.argmin(df['column1'].values)]['column2']
1
Ram Prajapati

heapqを使用して、最小のインデックスを見つけることもできます。次に、複数の検索を選択できます(たとえば、2つの最小のインデックス)。

import heapq

x = np.array([1,2,3,4,0,1,2,3,4,11]) 

heapq.nsmallest(2, (range(len(x))), x.take)

[4, 0]を返します

1
Karl Anka

NumPy for R は、Pythonで多数のR機能を提供します。

特定の質問について:

import numpy as np
x = [1,2,3,4,0,1,2,3,4,11] 
arr = np.array(x)
print(arr)
# [ 1  2  3  4  0  1  2  3  4 11]

print(arr.argmin(0)) # R's which.min()
# 4

print((arr==2).nonzero()) # R's which()
# (array([1, 6]),)
1
989