我发过一个类似的帖子here https://stackoverflow.com/questions/53384285/initialize-the-first-index-of-a-list-in-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)
哪里的number_of_payments
是一个类型矩阵<class 'list'>
.
这是一个例子:
print(number_of_payments[:1])
is
[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]])]
或类似的东西。
EDIT:
这是我的数据的示例:
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])
Gives me
[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
作为一个矩阵,我需要将相同的逻辑应用于这个更大的数据结构。如果清楚的话请告诉我。Edit 2:
好吧,这很难解释,所以我将逐步举例,我有这个数据或矩阵(number_of_ payment),无论它在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_ payment ,即
[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)