With object dtype:
In [44]: x=np.arange(3, dtype=object)
In [45]: x**1000
Out[45]:
array([0, 1,
10715086071862673209484250490600018105614048117055336074437503883703510511249361224931983788156958581275946729175531468251871452856923140435984577574698574803934567774824230985421074605062371141877954182153046474983581941267398767559165543946077062914571196477686542167660429831652624386837205668069376],
dtype=object)
But be ware that in terms of performance this is the equivalent of:
In [46]: [i**1000 for i in range(3)]
Out[46]:
[0,
1,
10715086071862673209484250490600018105614048117055336074437503883703510511249361224931983788156958581275946729175531468251871452856923140435984577574698574803934567774824230985421074605062371141877954182153046474983581941267398767559165543946077062914571196477686542167660429831652624386837205668069376]
In [51]: timeit [i**1000 for i in range(300)]
5.42 ms ± 111 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
In [52]: timeit np.arange(300,dtype=object)**1000
5.42 ms ± 111 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
dtype=objectand above will work out. Guaranteeing that all kinds of operators are working as expected though, well, i can't do that.