Вычитание первого элемента каждой строки в двумерном массиве - PullRequest
2 голосов
/ 24 февраля 2020

Я использую Python. У меня есть массив (ниже)

array([[20.28466797, 19.24307251, 20.87997437, ..., 20.38343811,
    19.70025635, 20.22036743],
   [ 4.21954346, 17.05456543, 10.09838867, ..., 19.50102234,
    19.62188721, 18.30804443],
   [14.44546509, 19.43798828, 19.45491028, ..., 22.08952332,
    17.83691406, 17.86752319])

Я ищу написать код, который будет принимать первый элемент каждой строки и вычитать из него каждое значение в строке.

Например, строка 1: 20.28466797–20.28466797, 19.24307251–20.28466797, 20.87997437–20.28466797 и др. c. строка 2: 4.21954346 -4.21954346, 17.05456543 - 4.21954346 и др. c.

Ответы [ 2 ]

3 голосов
/ 24 февраля 2020

Вы можете использовать numpy .tile , чтобы повторить первый элемент каждой строки для создания матрицы и вычесть ее из исходной матрицы.

your_matrix - np.tile(your_matrix[:,:1], your_matrix.shape[0])
1 голос
/ 25 февраля 2020

Следующее выполнит работу за вас:

import numpy as np

def array_fun(arr):
    # compute the length of the given array
    n = len(arr)
    m = len(arr[0])

    # create an empty list
    aList = []

    # append by substracting the first element
    [aList.append(arr[i][j]-arr[i][0]) for i in range(n) for j in range(m)]

    # return modified array
    return np.array(aList).reshape(n,m)

if __name__ == "__main__":
    # define your array
    arr = [[1, 3, 7], [1, 1, 2], [5, 2, 2]]

    # print initial array
    print(np.array(arr))

    # print modified array
    print(np.array(array_fun(arr)))

Начальный массив:

[[1 3 7]
 [1 1 2]
 [5 2 2]]

Конечный массив:

[[ 0  2  6]
 [ 0  0  1]
 [ 0 -3 -3]]
...