def grib_get_elements(gribid,key,indexes): """ @brief Retrieve the elements of the key array for the indexes specified in the input. @param gribid id of the grib loaded in memory @param key the key to be searched @param indexes single index or a list of indexes @return numpy.ndarray or array containing the values of key for the given indexes @exception GribInternalError """ try: iter(indexes) except TypeError: indexes = (indexes,) nidx = len(indexes) err,result = _internal.grib_get_double_ndelements(gribid,key,indexes,nidx) GRIB_CHECK(err) return result
def grib_get_double_elements(gribid,key,indexes): """ @brief Get as double array the elements of the "key" array whose indexes are listed in the input array. @param gribid id of the grib loaded in memory @param key the key to be searched @param indexes list or tuple of indexes @return numpy.ndarray or array @exception GribInternalError """ if with_numpy(): nidx = len(indexes) err,result = _internal.grib_get_double_ndelements(gribid,key,indexes,nidx) GRIB_CHECK(err) return result else: nidx = len(indexes) pidx = _internal.new_intArray(nidx) pval = _internal.new_doubleArray(nidx) psize = _internal.intp() psize.assign(nidx) for i in range(len(indexes)): _internal.intArray_setitem(pidx,i,indexes[i]) err = _internal.grib_c_get_real8_elements(gribid,key,pidx,pval,psize) GRIB_CHECK(err) result = array("d") for i in range(psize.value()): result.append(_internal.doubleArray_getitem(pval,i)) _internal.delete_intArray(pidx) _internal.delete_doubleArray(pval) _internal.delete_intp(psize) return result