Python中的矩阵向​​量运算

时间:2018-11-20 00:06:41

标签: python list matrix

我发了类似的帖子here。现在,我试图概括一下对整个数字矩阵所做的工作。

我特别想这样做:

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:

好吧,这很难解释,所以我将逐步讲解示例,无论Python中是什么,我都有此数据或矩阵(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]

为了简单起见,现在让我说第一行付款数,即

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

为简单起见,可以说我只有NDD_month的第一个元素,所以

8

然后要获得我想要的答案,我会这样做,因为Aurora Wang也提供了一个很好的答案,这就是

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 :(得分:1)

如果我没看错,您想做这样的事情:

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)