Python替换数组中的最大值
我有一个10 x 5 x 3的3D numpy阵列Python替换数组中的最大值,python,numpy,max,Python,Numpy,Max,我有一个10 x 5 x 3的3D numpy阵列a。我还有一个长度为3的向量B(最后一个轴的长度a)。我想将每个A[:,:,I]与B[I]进行比较,其中I=0:2并将所有A[:,:,I]>B[I]值替换为B[I] 有没有一种方法可以在没有for循环的情况下实现这一点 编辑:我使用for循环在I=0:2上尝试了argmax 您可以使用来完成此操作。它返回两个数组之间的元素最小值。如果阵列大小不同(如您的情况),则在比较之前,阵列会自动广播到正确的大小 A = numpy.random.rand(
a
。我还有一个长度为3的向量B
(最后一个轴的长度a
)。我想将每个A[:,:,I]
与B[I]
进行比较,其中I=0:2
并将所有A[:,:,I]>B[I]
值替换为B[I]
有没有一种方法可以在没有for循环的情况下实现这一点
编辑:我使用for循环在I=0:2
上尝试了argmax
您可以使用来完成此操作。它返回两个数组之间的元素最小值。如果阵列大小不同(如您的情况),则在比较之前,阵列会自动广播到正确的大小
A = numpy.random.rand(1,2,3)
# array([[[ 0.79188 , 0.32707664, 0.18386629],
# [ 0.4139146 , 0.07259663, 0.47604274]]])
B = numpy.array([0.1, 0.2, 0.3])
C = numpy.minimum(A, B)
# array([[[ 0.1 , 0.2 , 0.18386629],
# [ 0.1 , 0.07259663, 0.3 ]]])
或者按照建议,如果您想进行就地更换:
numpy.minimum(A, B, out=A)
您可以使用来完成此任务。它返回两个数组之间的元素最小值。如果阵列大小不同(如您的情况),则在比较之前,阵列会自动广播到正确的大小
A = numpy.random.rand(1,2,3)
# array([[[ 0.79188 , 0.32707664, 0.18386629],
# [ 0.4139146 , 0.07259663, 0.47604274]]])
B = numpy.array([0.1, 0.2, 0.3])
C = numpy.minimum(A, B)
# array([[[ 0.1 , 0.2 , 0.18386629],
# [ 0.1 , 0.07259663, 0.3 ]]])
或者按照建议,如果您想进行就地更换:
numpy.minimum(A, B, out=A)
到目前为止你尝试了什么?到目前为止你尝试了什么?或者
numpy.minimum(A,B,out=A)
@Divakar谢谢你指出这一点。我总是忘记那个选项!或者numpy.minimum(A,B,out=A)
@Divakar谢谢你指出这一点。我总是忘记那个选项!