我正在尝试在阵列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
答案 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,这是成功的。