我有一些用索引填充数据的n-d矩阵。下面是一个示例代码,它将使您了解我正在尝试实现的内容。
# sf = some_function or it can also be considered as array where
# sf(i) = sf[i]
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[sf(i)][sf(j)][sf(k)] = matrix2[i][j][k] 这是很容易做到的,如果我只有2-3个参数的函数,但如果参数是很多,我如何做到这一点?您可以假设矩阵已经包含了一些值(0)。
发布于 2020-02-18 13:19:49
这不是递归的,只是使用内置的迭代工具,这可能仍然对您有用.如果我正确地理解了你的问题,那就是:)否则就纠正我
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)https://stackoverflow.com/questions/60281350
复制相似问题