File: //usr/local/lib/python3.10/dist-packages/numpy/lib/__pycache__/index_tricks.cpython-310.pyc
o
���grz � @ s� d dl Z d dlZd dlZd dlZd dlZddlmZ d dlm m
Z d dlmZm
Z
d dlmZ d dlmZ ddlmZ d dlmZmZ d d lmZmZ d d
lmZ e jejdd�Zg d
�Zdd� Zee�dd� �Z G dd� d�Z!G dd� de!�Z"e"� Z#G dd� de!�Z$e$� Z%G dd� d�Z&G dd� de&�Z'e'� Z(G dd� de&�Z)e)� Z*ed�G dd� d��Z+ed�G d d!� d!��Z,G d"d#� d#�Z-e-d$d%�Z.e-d&d%�Z/d1d'd(�Z0ee0�d2d)d*��Z1ed�d3d+d,��Z2d-d.� Z3ee3�d/d0� �Z4dS )4� N� )�
set_module)�
ScalarType�array)�
issubdtype� )�diff)�ravel_multi_index�
unravel_index)� overrides�linspace)�
as_strided�numpy)�module)r r
�mgrid�ogrid�r_�c_�s_� index_exp�ix_�ndenumerate�ndindex�
fill_diagonal�diag_indices�diag_indices_fromc G � | S �N� )�argsr r �A/usr/local/lib/python3.10/dist-packages/numpy/lib/index_tricks.py�_ix__dispatcher � r! c G s� g }t | �}t| �D ]G\}}t|tj�s$t�|�}|jdkr$|�tj �}|j
dkr-td��t|j
tj�r9|�� \}|�d| |jf d|| d �}|�|� q
t|�S )a5
Construct an open mesh from multiple sequences.
This function takes N 1-D sequences and returns N outputs with N
dimensions each, such that the shape is 1 in all but one dimension
and the dimension with the non-unit shape value cycles through all
N dimensions.
Using `ix_` one can quickly construct index arrays that will index
the cross product. ``a[np.ix_([1,3],[2,5])]`` returns the array
``[[a[1,2] a[1,5]], [a[3,2] a[3,5]]]``.
Parameters
----------
args : 1-D sequences
Each sequence should be of integer or boolean type.
Boolean sequences will be interpreted as boolean masks for the
corresponding dimension (equivalent to passing in
``np.nonzero(boolean_sequence)``).
Returns
-------
out : tuple of ndarrays
N arrays with N dimensions each, with N the number of input
sequences. Together these arrays form an open mesh.
See Also
--------
ogrid, mgrid, meshgrid
Examples
--------
>>> a = np.arange(10).reshape(2, 5)
>>> a
array([[0, 1, 2, 3, 4],
[5, 6, 7, 8, 9]])
>>> ixgrid = np.ix_([0, 1], [2, 4])
>>> ixgrid
(array([[0],
[1]]), array([[2, 4]]))
>>> ixgrid[0].shape, ixgrid[1].shape
((2, 1), (1, 2))
>>> a[ixgrid]
array([[2, 4],
[7, 9]])
>>> ixgrid = np.ix_([True, True], [2, 4])
>>> a[ixgrid]
array([[2, 4],
[7, 9]])
>>> ixgrid = np.ix_([True, True], [False, False, True, False, True])
>>> a[ixgrid]
array([[2, 4],
[7, 9]])
r r z!Cross index must be 1 dimensional)r )�len� enumerate�
isinstance�_nx�ndarray�np�asarray�size�astype�intp�ndim�
ValueErrorr �dtype�bool_�nonzero�reshape�append�tuple)r �out�nd�k�newr r r r "