Skip to content
Merged
Show file tree
Hide file tree
Changes from 9 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion pandas/core/arrays/boolean.py
Original file line number Diff line number Diff line change
Expand Up @@ -379,7 +379,7 @@ def _logical_method(self, other, op): # type: ignore[override]
elif is_list_like(other):
other = np.asarray(other, dtype="bool")
if other.ndim > 1:
raise NotImplementedError("can only perform ops with 1-d structures")
return NotImplemented
other, mask = coerce_to_array(other, copy=False)
elif isinstance(other, np.bool_):
other = other.item()
Expand Down
27 changes: 27 additions & 0 deletions pandas/tests/arithmetic/test_numeric.py
Original file line number Diff line number Diff line change
Expand Up @@ -856,6 +856,33 @@ def test_modulo_zero_int(self):
expected = Series([np.nan, 0.0])
tm.assert_series_equal(result, expected)

def test_np_array_mul_ea_array_returns_extensionarray(self):
np_array = np.array([1, 2, 3, 4, 5], dtype=np.int64)
ea_array = array([1, 2, 3, 4, 5], dtype="Int64")
result = np_array * ea_array
assert isinstance(result, type(ea_array))
tm.assert_equal(result, array([1, 4, 9, 16, 25], dtype="Int64"))

def test_df_mul_np_and_ea_array_shape_and_errors(self):
df = pd.DataFrame(np.arange(50).reshape(10, 5)).notna().values
NP_array = np.array(list(range(10)), dtype=np.int64).reshape(10, 1)
EA_array = array(list(range(10)), dtype="Int64").reshape(10, 1)
result_np = df * NP_array
assert isinstance(result_np, np.ndarray)
tm.assert_equal(result_np.shape, (10, 5))

with pytest.raises(NotImplementedError):
_ = df * EA_array

def test_non_1d_ea_raises_typeerror(self):
ea_array = array([1, 2, 3, 4, 5], dtype="Int64").reshape(5, 1)
np_array = np.array([1, 2, 3, 4, 5], dtype=np.int64).reshape(5, 1)

with pytest.raises(NotImplementedError):
_ = ea_array * np_array
with pytest.raises(NotImplementedError):
_ = np_array * ea_array


class TestAdditionSubtraction:
# __add__, __sub__, __radd__, __rsub__, __iadd__, __isub__
Expand Down
Loading