parameter.py 文件源码

python
阅读 40 收藏 0 点赞 0 评论 0

项目:flopymetascript 作者: bdestombe 项目源码 文件源码
def parse_array(self, ar):
        """
        Consolidate an array to something smaller and remains
        broadcastable to the original dimensions. ndim remains the same.

        todo:
        - if squeezable in multiple dimensions, squeeze in all dimensions.
            it currently does this, but the entire most_squeezable_dim can be
            left out.
        :param ar: array to be parsed
        :return: consolidated array
        """
        assert isinstance(ar, np.ndarray)

        output = np.unique(ar)

        if output.size == 1:
            return 0, output.item()

        elif output.size == 0:
            return -1, output

        else:
            items_per_squeezed_dim = ar.ndim * [0]

            for dim in range(ar.ndim):
                output, index = uniquend(ar, axis=dim, return_index=True)

                if len(index) == 1:
                    items_per_squeezed_dim[dim] = output.size

                else:
                    items_per_squeezed_dim[dim] = ar.size

            most_squeezable_dim = items_per_squeezed_dim.index(
                min(items_per_squeezed_dim))

            if ar.size == items_per_squeezed_dim[most_squeezable_dim]:
                return -1, ar

            else:
                # can be squeezable in multiple dimensions
                # therefore call self
                cur = uniquend(ar, axis=most_squeezable_dim)

                # test if broadcastable shape, same elements values
                assert np.array_equiv(ar, cur)

                return 1, self.parse_array(cur)[1]
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号