Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python替换数组中的最大值_Python_Numpy_Max - Fatal编程技术网

Python替换数组中的最大值

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(

我有一个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(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谢谢你指出这一点。我总是忘记那个选项!