首页 > 解决方案 > 转换没有循环的numpy数组

问题描述

我有一个大小为 N 的 1D numpy 数组,我想将其转换为大小为 N*N 的 numpy 数组,其中每个元素由原始矩阵中的两个元素组成,因此原始数组中每个可能的条目组合是在最终矩阵中,例如

the input matrix
a = [1,2,3]

the result I would like
b = [[1,1],[1,2],[1,3],
    [2,1],[2,2],[2,3],
    [3,1],[3,2],[3,3]]

但是问题是我不能使用任何循环来做到这一点,只能使用 numpy、scipy 和 matlpotlib 的内置函数这可能吗?

标签: pythonnumpy

解决方案


递归意大利面:


def recursive_add_outer(array, newArr, iterator):
    if(iterator < len(array)):
        recursive_add_inner(array, newArr, iterator, 0)
        iterator += 1
        recursive_add_outer(array, newArr, iterator)
    else:
        print(newArr)
def recursive_add_inner(array, newArr, iterator, inneriterator):
    if inneriterator < len(array):
        item = []
        item.append(array[iterator])
        item.append(array[inneriterator])
        newArr.append(item)
        inneriterator += 1
        recursive_add_inner(array, newArr, iterator, inneriterator)
    else:
        return newArr
def main():
    a = [1,2,3]
    #target: b = [[1,1],[1,2],[1,3],[2,1],[2,2],[2,3],[3,1],[3,2],[3,3]]
    recursive_add_outer(a, [], 0)
if __name__ == '__main__':
    main()



推荐阅读