Describe the issue:
np.einsum() attempts to evaluate out[:] for a 0-dimensional output array out if optimize='optimal'.
Reproduce the code example:
import numpy as np
a = np.array([1.0, 2.0])
b = np.array([3.0, 4.0])
out = np.zeros(()) # 0-D output array
np.einsum('i,i->', a, b, out=out) # works
np.einsum('i,i->', a, b, out=out, optimize='optimal') # fails
Error message:
Traceback (most recent call last):
File "<python-input-0>", line 8, in <module>
np.einsum('i,i->', a, b, out=out, optimize='optimal') # fails
~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.13/site-packages/numpy/_core/einsumfunc.py", line 1638, in einsum
new_view = bmm_einsum(einsum_str, *tmp_operands, **kwargs)
File "/usr/lib/python3.13/site-packages/numpy/_core/einsumfunc.py", line 1228, in bmm_einsum
out[:] = ab
~~~^^^
IndexError: too many indices for array: array is 0-dimensional, but 1 were indexed
Python and NumPy Versions:
2.4.4
3.13.12 (main, Apr 24 2026, 21:23:57) [GCC 15.2.1 20260214]
Runtime Environment:
[{'numpy_version': '2.4.4',
'python': '3.13.12 (main, Apr 24 2026, 21:23:57) [GCC 15.2.1 20260214]',
'uname': uname_result(system='Linux', node='dijkstra', release='6.19.13-gentoo', version='#1 SMP PREEMPT_DYNAMIC Fri Apr 24 19:43:59 CEST 2026', machine='x86_64')},
{'simd_extensions': {'baseline': ['X86_V2', 'X86_V3'],
'found': [],
'not_found': ['X86_V4', 'AVX512_ICL', 'AVX512_SPR']}},
{'ignore_floating_point_errors_in_matmul': False},
{'available_backends': ['NETLIB', 'OPENBLAS'],
'current_backend': 'OPENBLAS',
'filepath': '/usr/lib64/libflexiblas.so.3.5',
'internal_api': 'flexiblas',
'loaded_backends': ['OPENBLAS'],
'num_threads': 22,
'prefix': 'libflexiblas',
'user_api': 'blas',
'version': '3.5.0'},
{'available_backends': ['NETLIB', 'OPENBLAS'],
'current_backend': 'OPENBLAS',
'filepath': '/usr/lib64/flexiblas/libflexiblas_fallback_lapack.so',
'internal_api': 'flexiblas',
'loaded_backends': ['OPENBLAS'],
'num_threads': 22,
'prefix': 'libflexiblas',
'user_api': 'blas',
'version': '3.5.0'},
{'architecture': 'HASWELL',
'filepath': '/usr/lib64/libopenblas_haswellp-r0.3.31.so',
'internal_api': 'openblas',
'num_threads': 22,
'prefix': 'libopenblas',
'threading_layer': 'openmp',
'user_api': 'blas',
'version': '0.3.31'},
{'filepath': '/usr/lib/gcc/x86_64-pc-linux-gnu/15/libgomp.so.1.0.0',
'internal_api': 'openmp',
'num_threads': 22,
'prefix': 'libgomp',
'user_api': 'openmp',
'version': None}]
How does this issue affect you or how did you find it:
I discovered this issue while working on a private computational physics project.
Describe the issue:
np.einsum()attempts to evaluateout[:]for a 0-dimensional output arrayoutifoptimize='optimal'.Reproduce the code example:
Error message:
Python and NumPy Versions:
2.4.4
3.13.12 (main, Apr 24 2026, 21:23:57) [GCC 15.2.1 20260214]
Runtime Environment:
[{'numpy_version': '2.4.4',
'python': '3.13.12 (main, Apr 24 2026, 21:23:57) [GCC 15.2.1 20260214]',
'uname': uname_result(system='Linux', node='dijkstra', release='6.19.13-gentoo', version='#1 SMP PREEMPT_DYNAMIC Fri Apr 24 19:43:59 CEST 2026', machine='x86_64')},
{'simd_extensions': {'baseline': ['X86_V2', 'X86_V3'],
'found': [],
'not_found': ['X86_V4', 'AVX512_ICL', 'AVX512_SPR']}},
{'ignore_floating_point_errors_in_matmul': False},
{'available_backends': ['NETLIB', 'OPENBLAS'],
'current_backend': 'OPENBLAS',
'filepath': '/usr/lib64/libflexiblas.so.3.5',
'internal_api': 'flexiblas',
'loaded_backends': ['OPENBLAS'],
'num_threads': 22,
'prefix': 'libflexiblas',
'user_api': 'blas',
'version': '3.5.0'},
{'available_backends': ['NETLIB', 'OPENBLAS'],
'current_backend': 'OPENBLAS',
'filepath': '/usr/lib64/flexiblas/libflexiblas_fallback_lapack.so',
'internal_api': 'flexiblas',
'loaded_backends': ['OPENBLAS'],
'num_threads': 22,
'prefix': 'libflexiblas',
'user_api': 'blas',
'version': '3.5.0'},
{'architecture': 'HASWELL',
'filepath': '/usr/lib64/libopenblas_haswellp-r0.3.31.so',
'internal_api': 'openblas',
'num_threads': 22,
'prefix': 'libopenblas',
'threading_layer': 'openmp',
'user_api': 'blas',
'version': '0.3.31'},
{'filepath': '/usr/lib/gcc/x86_64-pc-linux-gnu/15/libgomp.so.1.0.0',
'internal_api': 'openmp',
'num_threads': 22,
'prefix': 'libgomp',
'user_api': 'openmp',
'version': None}]
How does this issue affect you or how did you find it:
I discovered this issue while working on a private computational physics project.