gpt4 book ai didi

python - Meshgrid Numpy 中的 N 列矩阵(或其他)

转载 作者:太空宇宙 更新时间:2023-11-03 15:36:35 27 4
gpt4 key购买 nike

Python版本:2.7

我有以下numpy二维数组:

array([[ -5.05000000e+01,  -1.05000000e+01],
[ -4.04000000e+01, -8.40000000e+00],
[ -3.03000000e+01, -6.30000000e+00],
[ -2.02000000e+01, -4.20000000e+00],
[ -1.01000000e+01, -2.10000000e+00],
[ 7.10542736e-15, -1.77635684e-15],
[ 1.01000000e+01, 2.10000000e+00],
[ 2.02000000e+01, 4.20000000e+00],
[ 3.03000000e+01, 6.30000000e+00],
[ 4.04000000e+01, 8.40000000e+00]])

如果我想找到第一列和第二列的所有组合,我会使用np.array(np.meshgrid(first_column, secondary_column)).T.reshape(-1,2).结果,我将得到一个包含 10*10 = 100 个数据点100*1 矩阵。但是,我的矩阵可以有 3、4 或更多列,因此我在使用这个 numpy 函数时遇到问题。

问题:如何制作一个包含 3 列以上的自动网格化矩阵?

UPD:例如,我有初始数组:

[[-50.5 -10.5]
[ 0. 0. ]]

因此,我想要这样的输出数组:

array([[-10.5, -50.5],
[-10.5, 0. ],
[ 0. , -50.5],
[ 0. , 0. ]])

或者这个:

array([[-50.5, -10.5],
[-50.5, 0. ],
[ 0. , -10.5],
[ 0. , 0. ]])

最佳答案

您可以使用* operator在按顺序解压缩这些列的转置数组版本上。最后,需要进行交换轴操作,将输出网格数组合并为一个数组。

因此,一种通用解决方案是 -

np.swapaxes(np.meshgrid(*arr.T),0,2)

示例运行 -

In [44]: arr
Out[44]:
array([[-50.5, -10.5],
[ 0. , 0. ]])

In [45]: np.swapaxes(np.meshgrid(*arr.T),0,2)
Out[45]:
array([[[-50.5, -10.5],
[-50.5, 0. ]],

[[ 0. , -10.5],
[ 0. , 0. ]]])

关于python - Meshgrid Numpy 中的 N 列矩阵(或其他),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42469854/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com