如何使用递归或其他技术解决以下问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用递归或其他技术解决以下问题相关的知识,希望对你有一定的参考价值。
我有一些n-d矩阵,其中使用索引填充数据。以下是一个示例代码,它将使您了解我要实现的目标。
def sample_function(matrix, matrix2, obj1, obj2):
for i in range(len(obj1):
for j in range(len(obj2)):
for k in range(len(obj3):
matrix[i][j][k] = matrix2[i][j][k]
如果我只有2-3个函数参数,这很容易做到,但是如果参数很多,我该怎么做?您可以假设矩阵已经在那里填充了一些值(0)。
答案
这不是递归的,只是利用内置的itertools,它可能对您仍然有用...如果我正确理解了您的问题,那就是:)否则请纠正我]
import numpy as np
import itertools as it
def other_fun(*args):
return sum(args)
def sample_fun(mtx, *args):
for ids in it.product(*[range(len(obj)) for obj in args]):
mtx[ids] = other_fun(*[obj[idx] for obj,idx in zip(args,ids)])
return mtx
obj1 = [1,2,3]
obj2 = [4,5,6,7]
obj3 = [8,9]
objects = [obj1, obj2, obj3]
mtx = np.zeros([len(obj) for obj in objects])
mtx = sample_fun(mtx, *objects)
print(mtx)
以上是关于如何使用递归或其他技术解决以下问题的主要内容,如果未能解决你的问题,请参考以下文章
如何判断 Web 应用程序是不是是使用 Angular(或其他技术)构建的?
如何使用重复、while 循环或其他迭代技术编写一个根据某些规则返回输入向量索引的函数