查找最接近给定值和 return 行索引的值
Find values which are closest to given values and return the row index
有没有一种简单的方法可以以 numpy 的方式找到最接近的值?
并获取行号作为输出?
例如:我想找到最接近
的行
value= [0.33, 0.66, 0.99]
我有资料
random= pd.DataFrame()
random=random.assign(data='')
random.data= np.linspace(0.1,1.0,10)
data
0 0.1
1 0.2
2 0.3
3 0.4
4 0.5
5 0.6
6 0.7
7 0.8
8 0.9
9 1.0
作为答案,该函数现在应该给出 data
最接近 value
的行
answer= [2,6,9]
我正在尝试使用
idx = (np.abs(random.data - value)).argmin()
但我正在努力解决循环和行问题。
谁知道简单的方法? :-)
试试:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import pandas as pd
import numpy as np
value = 0.15
random= pd.DataFrame()
random=random.assign(data='')
random.data= np.linspace(0.1,1.0,10)
answer = []
temp = []
for d in random.data:
temp.append(np.abs(d - value))
for i in range(0, len(temp)):
try:
answer.append(temp.index(min(temp), i, i+1))
except ValueError as e:
print(e)
print(answer)
在一个函数中,它将是:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import pandas as pd
import numpy as np
def get_min(data, value):
answer = []
temp = []
for d in data:
temp.append(np.abs(d - value))
for i in range(0, len(temp)):
try:
answer.append(temp.index(min(temp), i, i+1))
except ValueError as e:
print(e)
return answer
random= pd.DataFrame()
random=random.assign(data='')
random.data= np.linspace(0.1,1.0,10)
print(get_min(random.data, 0.15))
问候
df = pd.DataFrame({'data':np.linspace(0.1, 1.0, 10)})
values = [0.33, 0.66, 0.99]
d = np.abs(values - df.values)
np.argmin(d, axis=0)
这 return 是 第一个 最接近值的索引。如果您在数据框中有多个值与 values
中的值同样接近并且想要 return 所有索引,您可以使用:
np.where(d == d.min(0))[0]
而不是 np.argmin
。
有没有一种简单的方法可以以 numpy 的方式找到最接近的值? 并获取行号作为输出?
例如:我想找到最接近
的行value= [0.33, 0.66, 0.99]
我有资料
random= pd.DataFrame()
random=random.assign(data='')
random.data= np.linspace(0.1,1.0,10)
data
0 0.1
1 0.2
2 0.3
3 0.4
4 0.5
5 0.6
6 0.7
7 0.8
8 0.9
9 1.0
作为答案,该函数现在应该给出 data
最接近 value
answer= [2,6,9]
我正在尝试使用
idx = (np.abs(random.data - value)).argmin()
但我正在努力解决循环和行问题。
谁知道简单的方法? :-)
试试:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import pandas as pd
import numpy as np
value = 0.15
random= pd.DataFrame()
random=random.assign(data='')
random.data= np.linspace(0.1,1.0,10)
answer = []
temp = []
for d in random.data:
temp.append(np.abs(d - value))
for i in range(0, len(temp)):
try:
answer.append(temp.index(min(temp), i, i+1))
except ValueError as e:
print(e)
print(answer)
在一个函数中,它将是:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import pandas as pd
import numpy as np
def get_min(data, value):
answer = []
temp = []
for d in data:
temp.append(np.abs(d - value))
for i in range(0, len(temp)):
try:
answer.append(temp.index(min(temp), i, i+1))
except ValueError as e:
print(e)
return answer
random= pd.DataFrame()
random=random.assign(data='')
random.data= np.linspace(0.1,1.0,10)
print(get_min(random.data, 0.15))
问候
df = pd.DataFrame({'data':np.linspace(0.1, 1.0, 10)})
values = [0.33, 0.66, 0.99]
d = np.abs(values - df.values)
np.argmin(d, axis=0)
这 return 是 第一个 最接近值的索引。如果您在数据框中有多个值与 values
中的值同样接近并且想要 return 所有索引,您可以使用:
np.where(d == d.min(0))[0]
而不是 np.argmin
。