Итак, предполагая, что в строке может быть только один 4
, вам нужно сделать следующее:
- перебрать все строки, и если есть четыре, используйте
roll
, чтобы он сталпоследний элемент - удалить последний столбец
в строках, которые имеют 4
, он удалит это 4 и сдвинет оставшиеся после него значения в строках, которые не имеютиметь 4
, он удалит последний элемент.
(я позволил себе попытаться с немного большей матрицей, просто чтобы убедиться, что вывод соответствует ожидаемому)
попробуйте это:
import numpy as np
# Actual solution
def remove_in_rows(mat, num):
for i, row in enumerate(mat):
if num in row.tolist():
index = row.tolist().index(num)
mat[i][index:] = np.roll(row[index:], -1)
return np.delete(mat, -1, 1)
# Just some example to demonstrate it works
matrix = np.array([[10 * y + x for x in range(6)] for y in range(6)])
matrix[1, 2] = 4
matrix[3, 3] = 4
matrix[4, 0] = 4
print("BEFORE:")
print(matrix)
matrix = remove_in_rows(matrix, 4)
print("AFTER:")
print(matrix)
Вывод:
BEFORE:
[[ 0 1 2 3 4 5]
[10 11 4 13 14 15]
[20 21 22 23 24 25]
[30 31 32 4 34 35]
[ 4 41 42 43 44 45]
[50 51 52 53 54 55]]
AFTER:
[[ 0 1 2 3 5]
[10 11 13 14 15]
[20 21 22 23 24]
[30 31 32 34 35]
[41 42 43 44 45]
[50 51 52 53 54]]