#python #python-3.x #numpy
#python #python-3.x #numpy
Вопрос:
У меня есть .mtx
файл, который выглядит следующим образом:
0 435 1
0 544 1
1 344 1
2 410 1
2 471 1
Эта матрица имеет форму (1000, 1000)
.
Как вы можете видеть, идентификаторы узлов начинаются с 0
. Я хочу изменить это, чтобы начать с 1
вместо 0
.
Другими словами, мне нужно добавить 1
ко всем числам в первом и втором столбцах, которые представляют идентификаторы узлов.
Итак, я преобразовал .mtx
файл в .txt
файл и попытался добавить 1
в каждый первый и второй столбцы.
и просто добавляется 1
в каждую строку, как показано ниже
import numpy as np
data_path = "my_data_path"
data = np.loadtxt(data_path, delimiter=' ', dtype='int')
for i in data:
print(data[i] 1)
и результат был
[ 1 436 2]
[ 1 545 2]
[ 2 345 2]
[ 3 411 2]
[ 3 472 2]
теперь мне нужно вычесть 1
из третьего столбца, но я понятия не имею, как это реализовать.
Кто-нибудь может мне помочь в этом?
Или, если есть какой-либо способ выполнить мою цель проще, пожалуйста, скажите мне. Заранее благодарю вас.
Ответ №1:
Почему бы вам не увеличить только первый столбец?
data[:, 0] = 1
Возможно, вы захотите взглянуть на индексацию в NumPy.
Кроме того, я не думаю, что цикл в вашем коде когда-либо работал:
for i in data:
print(data[i] 1)
Вы индексируете значения из массива, что обычно неверно и, безусловно, неверно в данном случае:
Ошибка IndexError: индекс 435 выходит за пределы оси 0 с размером 5
Вы можете исправить это, чтобы распечатать всю матрицу:
print(data 1)
Предоставление:
[[ 1 436 2]
[ 1 545 2]
[ 2 345 2]
[ 3 411 2]
[ 3 472 2]]