打印出大于Python中特定值的数组项

时间:2014-04-20 20:01:48

标签: python netcdf

我正在尝试在阵列MSLP上打印出大于100000的值 但我继续得到这个错误:具有多个元素的数组的真值是不明确的。使用a.any()或a.all()

这是我的代码:

import numpy as np
import netCDF4
from numpy import *
from netCDF4 import Dataset

ncfile= Dataset('test.nc','r')
lat  =ncfile.variables['lat'][:]
lon  =ncfile.variables['lon'][:]
time =ncfile.variables['time'][:] 
MSLP =ncfile.variables['PSL'][:]

for item in MSLP:
 if item>100000:
 print item

3 个答案:

答案 0 :(得分:1)

错误给出答案:

  

具有多个元素的数组的真值是不明确的

执行if item>100000:时,item是一个真值的数组 - 而不是单个元素。

如果您想要这些值,可以使用numpy.where

MSLP[numpy.where(MSLP > 100000)]

请记住:尽可能优先考虑numpy函数而不是遍历数组。

答案 1 :(得分:0)

以下是如何在列表中获取大于某个值的所有值:

>>> array
[1, 4, 5, 7, 3, 6, 9, 3, 6]
>>> copy = list(array)
>>> array = [1, 4, 5, 7, 3, 6, 9, 3, 6]
>>> copy = []
>>> for k in array:
...     if k > x:
...             copy.append(k)
... 
>>> copy
[7, 6, 9, 6]
>>> 

答案 2 :(得分:0)

感谢您的回答,但这不起作用。 我所要做的就是使用索引访问数组  即MSLP [i] [j] [k]> 10000,这是成功的。