In [5]: pd.Index([2, 2, 2])[np.array(0)]
---------------------------------------------------------------------------
AssertionError                            Traceback (most recent call last)
Cell In[5], line 1
----> 1 pd.Index([2, 2, 2])[np.array(0)]

File ~/pandas/core/indexes/base.py:5370, in Index.__getitem__(self, key)
   5366     disallow_ndim_indexing(result)
   5368 # NB: Using _constructor._simple_new would break if MultiIndex
   5369 #  didn't override __getitem__
-> 5370 return self._constructor._simple_new(result, name=self._name)

File ~/pandas/core/indexes/base.py:641, in Index._simple_new(cls, values, name, refs)
    631 @classmethod
    632 def _simple_new(
    633     cls, values: ArrayLike, name: Hashable | None = None, refs=None
    634 ) -> Self:
    635     """
    636     We require that we have a dtype compat for the values. If we are passed
    637     a non-dtype compat, then coerce using the constructor.
    638 
    639     Must be careful not to recurse.
    640     """
--> 641     assert isinstance(values, cls._data_cls), type(values)
    643     result = object.__new__(cls)
    644     result._data = values

AssertionError: <class 'numpy.int64'>

Not sure if we should allow this case, but I would expect either 2 or a ValueError

Comment From: hvsesha

Hi

idx=pd.Index([2, 2, 2]) key = np.array(0) result = idx[int(key)]

This will work .Returns result as 2

It is generally not recommended to index Pandas objects with NumPy arrays. It is more efficient and idiomatic to use Pandas' built-in indexing methods.