コード例 #1
0
 def select(self, subscript: tuple):
     if selection.is_advanced_selection(subscript):
         # This is not optimized.
         return self.advanced_select(subscript)
     else:
         # This is optimized.
         return self.basic_select(subscript)
コード例 #2
0
    def __getitem__(self, item):
        if not isinstance(item, tuple):
            ss = (item,)
        else:
            ss = item
        # We need to fetch any block arrays.
        tmp = []
        for entry in ss:
            if isinstance(entry, BlockArray):
                tmp.append(entry.get())
            else:
                tmp.append(entry)
        ss = tmp
        is_handled_advanced = True
        if len(ss) > 1:
            # Check if all entries are full slices except the last entry.
            for entry in ss[:-1]:
                is_handled_advanced = is_handled_advanced and (isinstance(entry, slice)
                                                               and entry.start is None
                                                               and entry.stop is None)
        if is_handled_advanced and selection.is_advanced_selection((ss[-1],)):
            # Treat this as a shuffle.
            return self._advanced_single_array_subscript(sel=(ss[-1],), axis=len(ss)-1)

        av: ArrayView = ArrayView.from_block_array(self)
        # TODO (hme): We don't have to create, but do so for now until we need to optimize.
        return av[item].create(BlockArray)
コード例 #3
0
 def assign(self, subscript: Tuple, value):
     if selection.is_advanced_selection(subscript):
         # This is not optimized.
         return self.advanced_assign(subscript, value)
     else:
         # This is optimized.
         return self.basic_assign(subscript, value)
コード例 #4
0
ファイル: test_selection.py プロジェクト: bveeramani/nums
def test_basics():
    assert is_advanced_selection((0, np.array([3, 1, 2])))