summaryrefslogtreecommitdiff
path: root/doc/release/upcoming_changes/21262.improvement.rst
blob: 4b10b26b43eb9d5df8eab755fccf5e95b5b75446 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
``np.kron`` now maintains subclass information
----------------------------------------------
``np.kron`` maintains subclass information now such as masked arrays
while computing the Kronecker product of the inputs

.. code-block:: python

    >>> x = ma.array([[1, 2], [3, 4]], mask=[[0, 1], [1, 0]])
    >>> np.kron(x,x)
    masked_array(
      data=[[1, --, --, --],
            [--, 4, --, --],
            [--, --, 4, --],
            [--, --, --, 16]],
      mask=[[False,  True,  True,  True],
            [ True, False,  True,  True],
            [ True,  True, False,  True],
            [ True,  True,  True, False]],
      fill_value=999999)

.. warning::
    ``np.kron`` output now follows ``ufunc`` ordering (``multiply``)
    to determine the output class type

    .. code-block:: python

        >>> class myarr(np.ndarray):
        >>>    __array_priority__ = -1
        >>> a = np.ones([2, 2])
        >>> ma = myarray(a.shape, a.dtype, a.data)
        >>> type(np.kron(a, ma)) == np.ndarray
        False # Before it was True
        >>> type(np.kron(a, ma)) == myarr
        True