BUG: pd.eval against single element array using numexpr engine coerces to scalar · Issue #10546 · pandas-dev/pandas (original) (raw)

import pandas as pd

# scalar (OK)
s = 1
pd.eval('s', engine='numexpr')
# 1L
pd.eval('s', engine='python')
#1

# array
a = np.array([1])

# OK
pd.eval('a', engine='python')
# array([1])

# NG
pd.eval('a', engine='numexpr')
# 1L

Internally, we can distinguish them using returned shape.

import numexpr as ne
ne.evaluate('s')
# array(1L)
ne.evaluate('a')
# array([1])
ne.evaluate('s').shape
# ()
ne.evaluate('a').shape
# (1,)