使用两个数组的最小值创建两个数组的矩阵

问题描述

假设我有以下内容(在python 3.7中)

x = np.array([2,4,6])
y = np.array([3,5])

如何获取输出

np.array([[2,2],[3,4],5]])

基本上将这两个数组用作新矩阵的“轴”,对于新矩阵的每个条目,采用min(row,col),而不使用任何循环。

解决方法

函数np.meshgrid将把这两个输入变量都扩展为2d数组(返回2个元素的列表);然后可以使用np.minimum获得逐个元素的最小值:

np.meshgrid(y,x)

返回:

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

和:

np.minimum(*np.meshgrid(y,x))

返回:

array([[2,5]])

(在此使用*将列表扩展为np.minimum的两个独立参数。)