@@ -1032,9 +1032,7 @@ def _putmask_simple(self, mask: np.ndarray, value: Any):
1032
1032
# GH#37833 np.putmask is more performant than __setitem__
1033
1033
np .putmask (values , mask , value )
1034
1034
1035
- def putmask (
1036
- self , mask , new , inplace : bool = False , axis : int = 0 , transpose : bool = False
1037
- ) -> List ["Block" ]:
1035
+ def putmask (self , mask , new , axis : int = 0 ) -> List ["Block" ]:
1038
1036
"""
1039
1037
putmask the data to the block; it is possible that we may create a
1040
1038
new dtype of block
@@ -1045,16 +1043,13 @@ def putmask(
1045
1043
----------
1046
1044
mask : np.ndarray[bool], SparseArray[bool], or BooleanArray
1047
1045
new : a ndarray/object
1048
- inplace : bool, default False
1049
- Perform inplace modification.
1050
1046
axis : int
1051
- transpose : bool, default False
1052
- Set to True if self is stored with axes reversed.
1053
1047
1054
1048
Returns
1055
1049
-------
1056
1050
List[Block]
1057
1051
"""
1052
+ transpose = self .ndim == 2
1058
1053
mask = _extract_bool_array (mask )
1059
1054
assert not isinstance (new , (ABCIndex , ABCSeries , ABCDataFrame ))
1060
1055
@@ -1091,8 +1086,6 @@ def putmask(
1091
1086
new = np .repeat (new , new_values .shape [- 1 ]).reshape (self .shape )
1092
1087
new = new .astype (new_values .dtype )
1093
1088
1094
- if new_values is self .values and not inplace :
1095
- new_values = new_values .copy ()
1096
1089
# we require exact matches between the len of the
1097
1090
# values we are setting (or is compat). np.putmask
1098
1091
# doesn't check this and will simply truncate / pad
@@ -1113,6 +1106,7 @@ def putmask(
1113
1106
# `np.place` on the other hand uses the ``new`` values at it is
1114
1107
# to place in the masked locations of ``new_values``
1115
1108
np .place (new_values , mask , new )
1109
+ # i.e. new_values[mask] = new
1116
1110
elif mask .shape [- 1 ] == len (new ) or len (new ) == 1 :
1117
1111
np .putmask (new_values , mask , new )
1118
1112
else :
@@ -1157,18 +1151,10 @@ def f(mask, val, idx):
1157
1151
nv = _putmask_smart (val , mask , n )
1158
1152
return nv
1159
1153
1160
- new_blocks = self .split_and_operate (mask , f , inplace )
1154
+ new_blocks = self .split_and_operate (mask , f , True )
1161
1155
return new_blocks
1162
1156
1163
- if inplace :
1164
- return [self ]
1165
-
1166
- if transpose :
1167
- if new_values is None :
1168
- new_values = self .values if inplace else self .values .copy ()
1169
- new_values = new_values .T
1170
-
1171
- return [self .make_block (new_values )]
1157
+ return [self ]
1172
1158
1173
1159
def coerce_to_target_dtype (self , other ):
1174
1160
"""
@@ -1711,17 +1697,13 @@ def set_inplace(self, locs, values):
1711
1697
assert locs .tolist () == [0 ]
1712
1698
self .values = values
1713
1699
1714
- def putmask (
1715
- self , mask , new , inplace : bool = False , axis : int = 0 , transpose : bool = False
1716
- ) -> List ["Block" ]:
1700
+ def putmask (self , mask , new , axis : int = 0 ) -> List ["Block" ]:
1717
1701
"""
1718
1702
See Block.putmask.__doc__
1719
1703
"""
1720
- inplace = validate_bool_kwarg (inplace , "inplace" )
1721
-
1722
1704
mask = _extract_bool_array (mask )
1723
1705
1724
- new_values = self .values if inplace else self . values . copy ()
1706
+ new_values = self .values
1725
1707
1726
1708
if isinstance (new , (np .ndarray , ExtensionArray )) and len (new ) == len (mask ):
1727
1709
new = new [mask ]
0 commit comments