在 Orientations 模块中,可以使用该方法设置系列的分类,以及更新一些拓扑信息。
series: list
或者 numpy.ndarray
需要进行设置的数据列。
该方法不返回任何结果,但将更新数据列的分类信息。
该方法的功能如下:
import gempy as gp
geo_model = gp.create_model('example')
gp.init_data(geo_model, [0, 10, 0, 10, 0, 10], [50, 50, 50],
default_values=True)
orientations = gp.create_data('orientations', geo_model,
orientation=(0, 0, 1), pole_vector=(1, 1, 1),
azimuth=90, series=0)
orientations.set_series_categories_from_series([0,1,2,3,4])
结果输出
Out: None
如果所选的数据列不在数据集中,则会引发异常“系列不存在”。
如果该系列已经被更改或删除,则会引发异常“系列不能被修改”。
def set_series_categories_from_series(self, series: Union[List[int], np.ndarray]):
"""
Sets the categories in a series and updates topo_indexes.
Args:
series (list or numpy.ndarray): Series to select the points from the
field_data.
Returns:
None
"""
if len(self.data) == 0:
raise ValueError('No ' + self.name + ' present. Can\'t set series'
' categories from series.')
if type(series) is not np.ndarray:
series = np.array(series)
if not np.isin(series, self.data.index).all():
not_found = series[~np.isin(series, self.data.index)]
raise IndexError('Series: ' + str(not_found) + ' have not been found')
if any(self.data['series'] != series[0]):
raise ValueError('Series can\'t be modified. Serie is not unique or '
'has been modified or deleted by other functions or '
'methods.')
new_cats = np.zeros(len(self.data), dtype=np.int8)
for i, s in enumerate(series):
new_cats[self.data['series'] == s] = i
self._update_topo_indexes(series, new_cats)
self.modify_category((new_cats + 1).tolist())