zmc
2023-08-08 e792e9a60d958b93aef96050644f369feb25d61b
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
U
¬ý°d$ã@sPddlmZddlZddlmZddlmZddœdd„Zd    d
d    d œd d „Z    dS)é)Ú annotationsN)Ú NumpyIndexT)Ú is_list_likezlist[np.ndarray])ÚreturncsÈd}t|ƒst|ƒ‚|D]}t|ƒst|ƒ‚qt|ƒdkr>gStjdd„|Dƒtjd}t |¡}t |dk¡rxtdƒ‚t     |d¡‰dˆd<|ddkr¦|d|‰n
t 
|¡‰‡‡fd    d
„t |ƒDƒS) añ
    Numpy version of itertools.product.
    Sometimes faster (for large inputs)...
 
    Parameters
    ----------
    X : list-like of list-likes
 
    Returns
    -------
    product : list of ndarrays
 
    Examples
    --------
    >>> cartesian_product([list('ABC'), [1, 2]])
    [array(['A', 'A', 'B', 'B', 'C', 'C'], dtype='<U1'), array([1, 2, 1, 2, 1, 2])]
 
    See Also
    --------
    itertools.product : Cartesian product of input iterables.  Equivalent to
        nested for-loops.
    z'Input must be a list-like of list-likesrcss|]}t|ƒVqdS)N)Úlen)Ú.0Úx©r    úOd:\z\workplace\vscode\pyvenv\venv\Lib\site-packages\pandas/core/reshape/util.pyÚ    <genexpr>+sz$cartesian_product.<locals>.<genexpr>)Zdtypez+Product space too large to allocate arrays!ééÿÿÿÿcs0g|](\}}tt |ˆ|¡t ˆ|¡ƒ‘qSr    )Ú tile_compatÚnpÚrepeatÚprod)rÚir©ÚaÚbr    r
Ú
<listcomp><s
ü þz%cartesian_product.<locals>.<listcomp>) rÚ    TypeErrorrrZfromiterZintpZcumprodÚanyÚ
ValueErrorZrollZ
zeros_likeÚ    enumerate)ÚXÚmsgrZlenXZcumprodXr    rr
Úcartesian_product
s(
 
 
 ûrrÚint)ÚarrÚnumrcCs8t|tjƒrt ||¡St t t|ƒ¡|¡}| |¡S)zf
    Index compat for np.tile.
 
    Notes
    -----
    Does not support multi-dimensional `num`.
    )Ú
isinstancerZndarrayZtileZarangerZtake)rr Ztakerr    r    r
rEs  r)
Ú
__future__rÚnumpyrZpandas._typingrZpandas.core.dtypes.commonrrrr    r    r    r
Ú<module>s
  ;