从两个 2d np.arrays element-wise 创建 argmax 的新 2d 数组
Create new 2d array of the argmax from two 2d np.arrays element-wise
假设我有两个二维 numpy 数组,X 和 Y,其中
X = np.array([[0,1,2,3],
[4,5,6,7]])
Y = np.array([[1,2,3,4],
[1,1,7,3]])
我想创建一个新的 2d numpy 数组 Z,它是 X、Y 元素的 argmax,所以 Z 将是,在这个例子中:
Z = np.array([[1,2,3,4],
[4,5,7,7]])
我尝试了以下变体 none return 预期结果
np.array([(np.argmax(X,Y))]) --> error
我知道我可以通过使用嵌套的 for 循环来简单地做到这一点,但是对于非常大的数据集来说这不是很有效。是否有一种有效的、特定于 numpy 的方法来创建一个新的二维数组(上例中的 Z),由两个二维数组(上例中的 X 和 Y)的 argmax 元素组成?
使用numpy.where
:
Z = np.where(X > Y, X, Y)
这里,第一个参数X > Y
逐个元素比较X
和Y
,returns比较的布尔数组。然后我们使用布尔数组构建 Z
:如果索引处的元素是 True
,它使用来自 X
的值,如果它是 False
,它使用来自 Y
.
的值
您正在寻找 np.maximum
:
>>> np.maximum(X, Y)
array([[1, 2, 3, 4],
[4, 5, 7, 7]])
逐元素比较数组,returns每个元素的最大值。
假设我有两个二维 numpy 数组,X 和 Y,其中
X = np.array([[0,1,2,3],
[4,5,6,7]])
Y = np.array([[1,2,3,4],
[1,1,7,3]])
我想创建一个新的 2d numpy 数组 Z,它是 X、Y 元素的 argmax,所以 Z 将是,在这个例子中:
Z = np.array([[1,2,3,4],
[4,5,7,7]])
我尝试了以下变体 none return 预期结果
np.array([(np.argmax(X,Y))]) --> error
我知道我可以通过使用嵌套的 for 循环来简单地做到这一点,但是对于非常大的数据集来说这不是很有效。是否有一种有效的、特定于 numpy 的方法来创建一个新的二维数组(上例中的 Z),由两个二维数组(上例中的 X 和 Y)的 argmax 元素组成?
使用numpy.where
:
Z = np.where(X > Y, X, Y)
这里,第一个参数X > Y
逐个元素比较X
和Y
,returns比较的布尔数组。然后我们使用布尔数组构建 Z
:如果索引处的元素是 True
,它使用来自 X
的值,如果它是 False
,它使用来自 Y
.
您正在寻找 np.maximum
:
>>> np.maximum(X, Y)
array([[1, 2, 3, 4],
[4, 5, 7, 7]])
逐元素比较数组,returns每个元素的最大值。