Python中的矩阵向量运算



我在这里发布了类似的帖子。现在,我试图推广在那里对整个数字矩阵所做的工作。

具体来说,我想这样做:

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)

其中CCD_ 1是类型为CCD_。

这里有一个例子:

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

然后为了得到我想要的答案,我会这样做,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)

如果我理解得对,你想做这样的事情:

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)

最新更新