Как установить значения с одинаковыми строкой и столбцом на ноль в Numpy ndarray? - PullRequest
0 голосов
/ 03 января 2019

У меня есть Numpy ndarray следующим образом "

x = np.array([[1, 2, 3], [4, 5, 6],[4, 1, 6],[1, 5, 11],[4,3, 4]], np.int32)

я устанавливаю значение в ноль, если индекс с тем же столбцом, строка

rows = x.shape[0]
cols = x.shape[1]
for k in range(0, rows):
    for y in range(0, cols):
        if k==y:
            x[k,y]=0

ожидаемый результат:

array([[ 0,  2,  3],
       [ 4,  0,  6],
       [ 4,  1,  0],
       [ 1,  5, 11],
       [ 4,  3,  4]])

Есть ли какой-нибудь простой (питонный способ добиться того же результата)? моя фактическая матрица очень большая ...

1 Ответ

0 голосов
/ 03 января 2019

Использование np.fill_diagonal:

x = np.array([[1, 2, 3], [4, 5, 6],[4, 1, 6],[1, 5, 11],[4,3, 4]], np.int32)
np.fill_diagonal(x,0)

print(x)
array([[ 0,  2,  3],
       [ 4,  0,  6],
       [ 4,  1,  0],
       [ 1,  5, 11],
       [ 4,  3,  4]], dtype=int32)
...