Операция 2D массива в python - PullRequest
1 голос
/ 07 апреля 2020

У меня есть 2D-массив, я хочу, чтобы элемент i массива в каждой строке был уменьшен на элемент i-1 в той же строке

Я пробовал этот код:

data = np.arange(12).reshape(3,4)
print(data)
for row in data:
    for cell in row:
        data[cell] = data[cell]-data[cell-1]

print(data)

, и я получил вывод, подобный этому

[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]
Traceback (most recent call last):
  File "D:/testing/test.py", line 55, in <module>
    data[cell] = data[cell]-data[cell-1]

IndexError: index -8 is out of bounds for axis 0 with size 3

, и я хочу вывод, подобный этому

[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]

[[1 1 1]
 [1 1 1]
 [1 1 1]]

основной процесс был data[i] = data[i]-data[i-1]. Мне нужен этот процесс для огромного масштаба данных, таких как более 1024x1024, поэтому мне нужно что-то эффективное

1 Ответ

6 голосов
/ 07 апреля 2020

Вы можете нарезать как массивы, так и вычитать:

data[:,1:] - data[:,:-1]

array([[1, 1, 1],
       [1, 1, 1],
       [1, 1, 1]])

Или взять np.diff:

np.diff(data)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...