def get_data_by_id(self, ids):
""" Helper for getting current data values from stored identifiers
:param float|list ids: ids for which data are requested
:return: the stored ids
:rtype: np.ndarray
"""
if self.ids is None:
raise ValueError("IDs not stored in node {}".format(self.name))
if self.data is None:
raise ValueError("No data in node {}".format(self.name))
ids = np.array(ids, ndmin=1, copy=False)
found_items = np.in1d(ids, self.ids)
if not np.all(found_items):
raise ValueError("Cannot find {} among {}".format(ids[np.logical_not(found_items)],
self.name))
idx = np.empty(len(ids), dtype='int')
for k, this_id in enumerate(ids):
if self.ids.ndim > 1:
idx[k] = np.flatnonzero(np.all(self.ids == this_id, axis=1))[0]
else:
idx[k] = np.flatnonzero(self.ids == this_id)[0]
return np.array(self.data, ndmin=1)[idx]
评论列表
文章目录