Python:在数组中找到元素的位置

2024-04-25 07:50:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个CSV包含气象数据,如最高和最低温度,降水量,经度和纬度的气象站等。每类数据存储在一个单一的列。

我想找出最高和最低温度的位置。找到最大值或最小值很容易: numpy.min(我的温度栏)

如何找到最小值或最大值所在的位置,以便找到经纬度?

以下是我的尝试:

def coldest_location(data):

coldest_temp= numpy.min(mean_temp)

    for i in mean_temp:
         if mean_temp[i] == -24.6:
            print i

Error: List indices must be int

我把CSV的每一列都保存到变量中,所以它们都是单独的列表。

lat          = [row[0] for row in weather_data]  # latitude
long         = [row[1] for row in weather_data]  # longitude
mean_temp    = [row[2] for row in weather_data]  # mean temperature 

我已经按照建议列表解决了这个问题。索引(x)

mean_temp.index(coldest_temp) 

coldest_location=[long[5],lat[5]] 

不确定在一个问题中问第二个问题是否合适,但如果有两个地点的最低温度相同怎么办?我怎么能同时找到它们和它们的指数呢?


Tags: csv数据innumpy列表fordatalocation
3条回答

正如Aaron所说,您可以使用.index(value),但是因为如果value不存在,则会引发异常,所以您应该处理该情况,即使您确信它永远不会发生。有两个选项是首先检查它的存在,例如:

if value in my_list:
    value_index = my_list.index(value)

或者捕获异常,如:

try:
    value_index = my_list.index(value)
except:
    value_index = -1

正确的错误处理永远不会出错。

你想过使用Python list的^{}方法吗?它返回传入的value的第一个实例所在的列表中的索引。

在没有实际看到数据的情况下,很难说明如何在特定情况下找到max和min的位置,但通常,可以按如下所示搜索位置。下面是一个简单的例子:

In [9]: a=np.array([5,1,2,3,10,4])

In [10]: np.where(a == a.min())
Out[10]: (array([1]),)

In [11]: np.where(a == a.max())
Out[11]: (array([4]),)

或者,也可以执行以下操作:

In [19]: a=np.array([5,1,2,3,10,4])

In [20]: a.argmin()
Out[20]: 1

In [21]: a.argmax()
Out[21]: 4

相关问题 更多 >