jul*_*ker 27 python arrays indexing numpy
我有一个CSV,其中包含气象站的最高和最低温度,降水量,经度和纬度等天气数据.每类数据都存储在一个列中.
我想找到最高和最低温度的位置.查找最大值或最小值很简单:numpy.min(my_temperatures_column)
如何找到最小值或最大值所在的位置,以便找到纬度和经度?
这是我的尝试:
def coldest_location(data):
coldest_temp= numpy.min(mean_temp)
for i in mean_temp:
if mean_temp[i] == -24.6:
print i
Run Code Online (Sandbox Code Playgroud)
错误:列表索引必须为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
Run Code Online (Sandbox Code Playgroud)
我根据建议list.index(x)解决了这个问题
mean_temp.index(coldest_temp)
coldest_location=[long[5],lat[5]]
Run Code Online (Sandbox Code Playgroud)
不确定在问题中询问第二个问题是否合适,但如果有两个位置具有相同的最低温度怎么办?我怎么能找到它们和它们的指数?
Mar*_*cin 14
在没有实际查看数据的情况下,很难说如何在特定情况下找到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]),)
Run Code Online (Sandbox Code Playgroud)
或者,您也可以执行以下操作:
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
Run Code Online (Sandbox Code Playgroud)
亚伦指出,你可以使用.index(value),但由于这是否会抛出一个异常value不存在,你应该处理的情况下,即使你肯定永远不会发生.有两种选择是首先检查其存在,例如:
if value in my_list:
value_index = my_list.index(value)
Run Code Online (Sandbox Code Playgroud)
或通过捕获例外,如:
try:
value_index = my_list.index(value)
except:
value_index = -1
Run Code Online (Sandbox Code Playgroud)
正确的错误处理永远不会出错.