2014-04-20 60 views
-1

我試圖在數組上打印出大於100000的值MSLP 但是我一直在得到這個錯誤:具有多個元素的數組的真值是模糊的。使用a.any()或a.all()在Python中打印出大於特定值的數組項目

這裏是我的代碼:

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 
+0

MSLP定義在哪裏?請顯示你的整個代碼。 –

+0

MSLP是來自netcdf文件的變量。這是整個代碼。 –

+0

'MSLP'有多少個維度?你可以添加「MSLP.shape」的輸出嗎? – SlightlyCuban

回答

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] 
>>> 
0

謝謝你的回答,但那沒有奏效。 我所要做的只是使用索引 (即MSLP [i] [j] [k]> 10000)來訪問數組,該算法已經解決。

1

錯誤給出了答案:

多於一個元素的數組的真值是不明確的

當你這樣做if item>100000:item是真值的數組 - 不一個單一的元素。

如果你想要的值,你可以使用numpy.where

MSLP[numpy.where(MSLP > 100000)] 

記住:喜歡numpy的功能,在通過遍歷數組只要有可能。