Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.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 由另一个数组索引的两个numpy数组的元素最小值_Python_Python 3.x_Numpy_Array Broadcasting_Numpy Ndarray - Fatal编程技术网

Python 由另一个数组索引的两个numpy数组的元素最小值

Python 由另一个数组索引的两个numpy数组的元素最小值,python,python-3.x,numpy,array-broadcasting,numpy-ndarray,Python,Python 3.x,Numpy,Array Broadcasting,Numpy Ndarray,我有三个形状数组: A = a = np.random.exponential(1, [10, 1000000]) # of shape (10, 1000000) B = a = np.random.exponential(1, [10, 1000000]) # of shape (10, 1000000) 我计算了另一个数组IND[],如下所示。IND[]的每个元素是A的最大元素的索引(一列中每10个值的最大值) 我想计算另一个数组C,它包含由IND[]的值指定的第#行A和B的元素最小

我有三个形状数组:

A = a = np.random.exponential(1, [10, 1000000])  # of shape (10, 1000000)
B = a = np.random.exponential(1, [10, 1000000])  # of shape (10, 1000000)
我计算了另一个数组IND[],如下所示。IND[]的每个元素是A的最大元素的索引(一列中每10个值的最大值)

我想计算另一个数组C,它包含由IND[]的值指定的第#行A和B的元素最小值。因此,C数组的形状应该是(1000000)。我想避免循环。我尝试了以下方法,但C的值不正确

for j in range(0, A.shape[1]):    
        m  = ind[j]
        C  = minimum(A[m,:], B[m,:])  # return 1x1000000 array
很抱歉,由于阵列太大,无法发布。你可以随便拿 形状相同的数组

第一次编辑: 有人给了我正确的答案,但他删除了(不知道为什么?) 无论如何,在他删除答案之前,我复制了它。请再贴一次,这样我才能把它标对。(对他来说:为了简单起见,他采用了1100个数组)


注意:我不擅长numpy,因此可能会有更有效的解决方案。

首先查找A和B行中的最小值:

minAB = np.min(np.minimum(A, B), axis=1)
然后使用
ind
索引此数组:

C = minAB[ind]

我缩短了您的阵列:

a = np.random.exponential(1, [10, 100])  # of shape (10, 100)
b = np.random.exponential(1, [10, 100])
ind=np.argmax(a,axis=0)
使用该
ind
a
b
中为每列选择一行:

a_ = a[ind,np.arange(a.shape[1])]
b_ = b[ind,np.arange(a.shape[1])]
然后计算
c

c=np.minimum(a_, b_)

找到了argmax,但没有找到argmin?首先按行计算A和B的最小值,并将其存储在数组中;然后使用
ind
索引该数组。您能提供2个包含5个元素的数组,并向我们展示您需要的预期输出吗?谢谢。这个问题解决得很好。如果“ind”是axis=0而不是max上的随机选择怎么办?它应该是相同的,如果
ind
>9它将抛出一个索引错误,但不,我的意思是如果我想要两个数组中随机选择的元素的索引而不是ind=np.argmax(a,axis=0),例如ind=np.argrandom(a,axis=0)(np.argrandom不存在,我只是好奇这样一个函数是否存在?)。
c=np.minimum(a_, b_)