python-3.x - 连接两个数组作为坐标对
问题描述
我有两个 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 演员之前和之后的列表。
解决方案
一种方式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
将所有可能的组合配对,转置以将它们组合在一起,然后重塑为所需的形状。
推荐阅读
- c - 为什么 sigaction 调用核心转储
- xamarin - Xamarin:InitializeComponent() 太复杂
- python - 在包含所有依赖项的 ac 程序中嵌入 python
- javascript - 为什么用户在删除后无法选择图像?
- javascript - 基于屏幕尺寸的功能
- angular - 使用承诺删除后如何刷新我的列表
- c# - 这是我应该编码我的游戏以在玩家死亡后重置分数的正确方式吗?
- tensorflow - 在 Keras/Tensorflow 中延迟梯度更新
- java - Java ClassFile 附加字节?
- c# - 获取 OAuth 令牌以读取 Outlook 电子邮件时使用的“范围”值