生成一个包含其元素坐标向量的 numpy 数组:

问题描述 投票:0回答:1

我想生成形状为

(n,)*n
的数组,其元素是元素自己的坐标向量。例如
n=2
的情况是:

array([[[0,0], [0,1]],
       [[1,0], [1,1]]])

目前我有代码:

def coords(n):
    M = numpy.fromfunction(
        function = lambda *i: list(i),
        shape = (n,)*n
    )
    return M

但是,这会输出一个

n
数组列表,每个形状为
(n,)*n
,其中第 m 个数组是第 m 个坐标的投影。例如,对于
coords(2)
输出:

[array([[0., 0.],
        [1., 1.]]),
 array([[0., 1.],
        [0., 1.]])]

...所以第一个数组是 x 坐标的投影,第二个数组是 y 坐标的投影。

我相信这是因为 lambda 函数不能有向量输出?如果是这样,除了 lambda 函数之外,我还可以在

numpy.fromfunction
表达式内部使用什么?我应该使用与
numpy.fromfunction
完全不同的东西吗?

任何帮助将非常感激!谢谢!

python numpy
1个回答
0
投票

无需使用函数,只需

transpose
数组的
indices
:

np.transpose(np.indices((2, 2)), axes=(1, 2, 0))

#array([[[0, 0],
#        [0, 1]],

#       [[1, 0],
#        [1, 1]]])
© www.soinside.com 2019 - 2024. All rights reserved.