Is it possible to assign integer/ float values other than default 1 and 0 to the boolean True and False in array?
By default True converts to 1 and False to 0 from what I know. However when I try to assign '5.0' to True from a 2d array dtype=bool, the output still gives True and not the assigned integer value
#main_arr is a 3d array
main_arr = self.predictor(image)["instances"].pred_masks
#Taking the slice from 3d array based on 1st dimension
arr = np.asarray(main_arr[0,:,:])
#finding the non zero elements
row, col = np.nonzero(arr)
#assigning values to non zero elements
arr[row, col] = 5.0
print("The Non Zero value of element is :", arr[row[0]][col[0]])
The output is still True
The Non Zero value of element is : True
Whereas I would like to see something like
The Non Zero value of element is : 5.0
CodePudding user response:
Since the dtype of arr is boolean, when you make assignments within that array, it is being cast to match the dtype. You need an array with the appropriate dtype to do this:
arr = arr.astype(np.float64)
arr[row, col] = 5.0
