【问题标题】:Concatenate two arrays as coordinate-couples连接两个数组作为坐标对
【发布时间】:2020-11-23 08:59:30
【问题描述】:

我有两个 numpy 数组,我需要将它们组合成一个二维数组:每一行都必须是坐标对。例如,如果 numpy 数组是:

[1 2 3]
[a b c]

那么我的目标是:

[[1 a]
 [1 b]
 [1 c]
 [2 a]
 [2 b]
 [2 c]
 [3 a]
 [3 b]
 [3 c]]

我试过了:

    import numpy as np

    x1_start, x1_stop, x1_step = 88.5, 91.5, 0.2
    x2_start, x2_stop, x2_step = 82, 90, 0.5

    x1 = np.arange(x1_start, x1_stop, x1_step)
    x2 = np.arange(x2_start, x2_stop, x2_step)

    x1x2 = np.array([])

    for k in range(len(x1)):
        for h in range(len(x2)):
            list = [x1[k], x2[h]]
            np.append(x1x2, list ,0)

但结果是一个空的 numpy 数组。或者,我试过这个:

x1x2 = []

for k in range(len(x1)):
    for h in range(len(x2)):
        x1x2.append([x1[k],x2[h]])

print(type(x1x2))
np.asarray(x1x2)
print(type(x1x2))

该列表包含正确的数字,但是当我打印它的类型时,它在 np.array 转换之前和之后都是一个列表。

【问题讨论】:

    标签: python-3.x concatenation numpy-ndarray


    【解决方案1】:

    meshgrid 的一种方式

    x = np.array([1,2,3])
    y = np.array([4,5,6])
    np.array(np.meshgrid(x, y)).T.reshape(-1, 2)
    

    会导致

    array([[1, 4],
           [1, 5],
           [1, 6],
           [2, 4],
           [2, 5],
           [2, 6],
           [3, 4],
           [3, 5],
           [3, 6]])
    

    meshgrid 将所有可能的组合配对,转置以将它们组合在一起,然后重新调整为所需的形状。

    【讨论】:

      猜你喜欢
      • 2011-01-26
      • 2018-09-19
      • 2021-05-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多