@@ -346,22 +346,54 @@ def test_divide_by_zero(self, zero, negative):
346
346
result = a / zero
347
347
expected = np .array ([np .nan , np .inf , - np .inf , np .nan ])
348
348
if negative :
349
- values = [np .nan , - np .inf , np .inf , np .nan ]
350
- else :
351
- values = [np .nan , np .inf , - np .inf , np .nan ]
352
- expected = np .array (values )
349
+ expected *= - 1
353
350
tm .assert_numpy_array_equal (result , expected )
354
351
355
- def test_pow (self ):
356
- # https://github.com/pandas-dev/pandas/issues/22022
357
- a = integer_array ([1 , np .nan , np .nan , 1 ])
358
- b = integer_array ([1 , np .nan , 1 , np .nan ])
352
+ def test_pow_scalar (self ):
353
+ a = pd .array ([0 , 1 , None , 2 ], dtype = "Int64" )
354
+ result = a ** 0
355
+ expected = pd .array ([1 , 1 , 1 , 1 ], dtype = "Int64" )
356
+ tm .assert_extension_array_equal (result , expected )
357
+
358
+ result = a ** 1
359
+ expected = pd .array ([0 , 1 , None , 2 ], dtype = "Int64" )
360
+ tm .assert_extension_array_equal (result , expected )
361
+
362
+ # result = a ** pd.NA
363
+ # expected = pd.array([None, 1, None, None], dtype="Int64")
364
+ # tm.assert_extension_array_equal(result, expected)
365
+
366
+ result = a ** np .nan
367
+ expected = np .array ([np .nan , 1 , np .nan , np .nan ], dtype = "float64" )
368
+ tm .assert_numpy_array_equal (result , expected )
369
+
370
+ # reversed
371
+ result = 0 ** a
372
+ expected = pd .array ([1 , 0 , None , 0 ], dtype = "Int64" )
373
+ tm .assert_extension_array_equal (result , expected )
374
+
375
+ result = 1 ** a
376
+ expected = pd .array ([1 , 1 , 1 , 1 ], dtype = "Int64" )
377
+ tm .assert_extension_array_equal (result , expected )
378
+
379
+ # result = pd.NA ** a
380
+ # expected = pd.array([1, None, None, None], dtype="Int64")
381
+ # tm.assert_extension_array_equal(result, expected)
382
+
383
+ result = np .nan ** a
384
+ expected = np .array ([1 , np .nan , np .nan , np .nan ], dtype = "float64" )
385
+ tm .assert_numpy_array_equal (result , expected )
386
+
387
+ def test_pow_array (self ):
388
+ a = integer_array ([0 , 0 , 0 , 1 , 1 , 1 , None , None , None ])
389
+ b = integer_array ([0 , 1 , None , 0 , 1 , None , 0 , 1 , None ])
359
390
result = a ** b
360
- expected = pd . core . arrays . integer_array ([1 , np . nan , np . nan , 1 ])
391
+ expected = integer_array ([1 , 0 , None , 1 , 1 , 1 , 1 , None , None ])
361
392
tm .assert_extension_array_equal (result , expected )
362
393
363
394
def test_rpow_one_to_na (self ):
364
395
# https://github.com/pandas-dev/pandas/issues/22022
396
+ # https://github.com/pandas-dev/pandas/issues/29997
365
397
arr = integer_array ([np .nan , np .nan ])
366
398
result = np .array ([1.0 , 2.0 ]) ** arr
367
399
expected = np .array ([1.0 , np .nan ])
0 commit comments