@@ -14,36 +14,22 @@ def __init__(self, obj):
14
14
15
15
def get_idx (self , idx ):
16
16
""" Returns a slice of the original Triangle """
17
- from chainladder .core .triangle import Triangle
18
- obj = Triangle ()
17
+ obj = self .obj .copy ()
19
18
i_idx = _LocBase ._contig_slice (idx [0 ])
20
19
c_idx = _LocBase ._contig_slice (idx [1 ])
21
20
o_idx = _LocBase ._contig_slice (idx [2 ])
22
21
d_idx = _LocBase ._contig_slice (idx [3 ])
23
22
if type (o_idx ) != slice or type (d_idx ) != slice :
24
23
raise ValueError ("Fancy indexing on origin/development is not supported." )
25
24
if type (i_idx ) is slice or type (c_idx ) is slice :
26
- obj .values = self . obj .values [i_idx , c_idx , o_idx , d_idx ]
25
+ obj .values = obj .values [i_idx , c_idx , o_idx , d_idx ]
27
26
else :
28
- obj .values = self .obj .values [i_idx , :, o_idx , d_idx ][:, c_idx , ...]
29
- obj .kdims = self .obj .kdims [i_idx ]
30
- obj .vdims = self .obj .vdims [c_idx ]
31
- obj .odims = self .obj .odims [o_idx ]
32
- obj .ddims = self .obj .ddims [d_idx ]
33
- obj .iloc = Ilocation (obj )
34
- obj .loc = Location (obj )
35
- obj .origin_grain = self .obj .origin_grain
36
- obj .development_grain = self .obj .development_grain
37
- obj .key_labels = self .obj .key_labels
38
- obj .origin_close = self .obj .origin_close
39
- obj .is_pattern = self .obj .is_pattern
40
- obj .is_cumulative = self .obj .is_cumulative
41
- obj .virtual_columns = self .obj .virtual_columns
42
- obj .array_backend = self .obj .array_backend
43
- obj .valuation_date = self .obj .valuation_date
44
- obj .valuation_date = np .minimum (obj .valuation .max (), self .obj .valuation_date )
45
- for t in self .obj .subtriangles + ['w_' ] if hasattr (self .obj , 'w_' ) else []:
46
- setattr (obj , t , getattr (self .obj , t ))
27
+ obj .values = obj .values [i_idx , :, o_idx , d_idx ][:, c_idx , ...]
28
+ obj .kdims = obj .kdims [i_idx ]
29
+ obj .vdims = obj .vdims [c_idx ]
30
+ obj .odims , obj .ddims = obj .odims [o_idx ], obj .ddims [d_idx ]
31
+ obj .iloc , obj .loc = Ilocation (obj ), Location (obj )
32
+ obj .valuation_date = np .minimum (obj .valuation .max (), obj .valuation_date )
47
33
return obj
48
34
49
35
@staticmethod
0 commit comments