Матричные векторные операции в Python - PullRequest
0 голосов
/ 20 ноября 2018

Я сделал похожий пост здесь .Теперь я пытаюсь обобщить то, что было сделано для всей матрицы чисел.

В частности, я хочу сделать это:

dates = []
dates.append(NDD_month[0])
for i in range(1,len(cpi)):
    dates.append((dates[i-1] + 12 - number_of_payments[:i]) % 12)
print(dates)

, где number_of_payments - это матрица типа <class 'list'>.

Вот пример:

print(number_of_payments[:1])

- это

[array([[0, 1, 0, 1, 1, 1, 0, 5, 1, 0, 2, 1]])]

После выполнения того, что я хочу, тогда

print(dates[:1])

Должно быть

[array([[8, 8, 7, 7, 6, 5, 4, 4, 11, 10, 10, 8]])]

или что-то в этом роде.

РЕДАКТИРОВАТЬ:

Вот пример того, как мои данные выглядят:

print(number_of_payments[:3])

Это дает мне это:

[
    array(
    [
        [0, 1, 0, 1, 1, 1, 0, 5, 1, 0, 2, 1]
    ]),
    array(
    [
        [0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 1, 0],
        [1, 3, 1, 0, 0, 1, 1, 1, 1, 0, 1, 0]
    ]),
    array(
    [
        [0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0],
        [0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
        [1, 0, 2, 0, 2, 1, 1, 0, 2, 1, 0, 0]
    ])
]

print(NDD_month[:3])

Дает мне

[8, 7, 11]

Теперь для ответа я хочу сделать что-то подобное, что я делал в моем предыдущем посте, гдеУ меня было

dates = []
dates.append(NDD_month[0])
for i in range(1, len(first_payments)):
    dates.append((dates[i-1] + 12 - first_payments[i-1]) % 12)
print(dates)

Это дало мне правильный вывод

[8 8 7 7 6 5 4 4 11 10 10 8]

Но теперь, когда у меня number_of_payments является матрицей, мне нужно применить ту же логику к этим большим даннымсостав.Дайте мне знать, если это ясно. Редактировать 2:

Хорошо, это сложно объяснить, поэтому я собираюсь перейти к пошаговому примеру, у меня есть эти данные или матрица (number_of_payments), что бы это ни было в python:

    [[0, 1, 0, 1, 1, 1, 0, 5, 1, 0, 2, 1],
     [0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 1, 0],
     [1, 3, 1, 0, 0, 1, 1, 1, 1, 0, 1, 0]]

У меня есть другой список или вектор, который называется NDD_month, первые три элемента:

[8, 7, 11]

Теперь для простоты скажем, у меня просто есть первая строка number_of_payments, т.е.

[0, 1, 0, 1, 1, 1, 0, 5, 1, 0, 2, 1]

Далее, для простоты, скажем, у меня есть только первый элемент NDD_month, поэтому

8

Затем, чтобы получить ответ, который я ищу, я бы сделал это, чтобы Аврора Ван также дала хороший ответ, который был следующим

first_payments = number_of_payments[:1]
first_payments = first_payments[0][0]
dates = []
dates.append(NDD_month[0])
for i in range(1, len(first_payments)):
    dates.append((dates[i-1] + 12 - first_payments[i-1]) % 12)
print(dates)

Это дает мне [8, 8, 7, 7, 6, 5, 4, 4, 11, 10, 10, 8].

Теперь мне нужно сделать то же самое, но для каждой строки в матрице и каждого элемента в векторе NDD_month.Я надеюсь, что это делает это намного более ясным.

Я думал, что это может сработать, но снова я новичок в python, и это не работает:

dates = []
for i in range(1,len(NDD_month)):
    dates.append(NDD_month[i-1])
    for j in range(1, len(NDD_month)):
        dates.append((dates[j-1] + 12 - number_of_payments[i-1][j-1]) % 12)
print(dates)

1 Ответ

0 голосов
/ 20 ноября 2018

Если я вас правильно понял, вы хотите сделать что-то вроде этого:

number_of_payments = [
    [0, 1, 0, 1, 1, 1, 0, 5, 1, 0, 2, 1],
    [0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 1, 0],
    [1, 3, 1, 0, 0, 1, 1, 1, 1, 0, 1, 0]
]
NDD_month = [8, 7, 11]
dates = []
for i in range(len(number_of_payments)):
    dates.append([NDD_month[i]])
    for j in range(1, len(number_of_payments[i])):
        dates[i].append((dates[i][j-1] + 12 - number_of_payments[i][j-1]) % 12)
print(dates)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...