I have an array `A`

. I want to delete all positive elements of a row and replace it with zero but not the diagonal elements. But I am getting an error. I present the expected output.

```
import numpy as np
A=np.array([[1,-2,3],[1,2,6],[-7,8,-2]])
A=np.delete(np.where(A>0, A, 0).sum(axis=1))
print(A)
```

The error is

```
in <module>
A=np.delete(np.where(A>0, A, 0).sum(axis=1))
File "<__array_function__ internals>", line 4, in delete
TypeError: _delete_dispatcher() missing 1 required positional argument: 'obj'
```

The expected output is

```
array([[1,-2,0],[0,2,0],[-7,0,-2]])
```

### >Solution :

An easy option is to repair the diagonal:

```
B = np.where(A>0, A, 0)
np.fill_diagonal(B, A.diagonal())
print(B)
```

*Note that this creates a new array, while the second approach below modifies A in place.*

Another approach might be to get the x/y indices of the 2D array for which the value is 0 and only keep those not on the diagonal (x!=y):

```
x, y = np.where(A>0)
m = x!=y
A[x[m], y[m]] = 0
```

Output:

```
[[ 1 -2 0]
[ 0 2 0]
[-7 0 -2]]
```