#python
Вопрос:
У меня есть матрица numpy с 10 столбцами и 4 строками, заполненными только 0 и 1. Я хочу изменить только первую строку, используя срезы.
mat = [[0,1,1,1,0,0,0,0,0,1] [0,0,0,0,0,0,0,0,0,0] [1,1,1,1,1,1,1,1,1,1] [0,0,0,0,0,0,0,0,0,0]]
срезается как точка посередине, так что строка становится
[0,0,0,0,1,0,1,1,1,0]
а остальная часть матрицы равна предыдущей.
Я пытался использовать эти кусочки, но я не знаю, как собрать их вместе.
mat1 = mat[0,0:5] mat2 = mat[0,5:10]
Комментарии:
1.
np.concatenate((mat2, mat1))
?2. Я думаю, что не очень понятно, что вы пытаетесь сделать, может быть, более конкретно?
mat[0,0:5]
представляет собой массив ( первые пять элементов первой строки)3. Привет @UlisesBussi , я пытаюсь разрезать исходную первую строку матрицы в mat1 и mat2, соединить их вместе (mat2, затем mat1) и создать новую матрицу, в которой будет изменена только первая строка, перевернув две половины. Я сделал это таким образом, потому что не знаю другого способа сделать это.
4. Теперь я понимаю! вы хотите изменить только первую строку, да, тогда вы можете объединить или
hstack
сделать срезы:newRow = np.hstack( [ mat[0,5:], mat[0,:5] ])
затем добавьте новую строку в исходную матрицу (или копию, если хотите сохранить исходную). Другой выбор-определить вектор с новыми индексамиnewOrd =[5,6,7,8,9,0,1,2,3,4]
и сделать » mat[0,:] = mat[0,новое слово] `5. @not_speshal хорошо, теперь как я могу поместить эту строку в качестве моей первой строки в коврик?