Numpy乘法并创建新列表B[i]=乘积(A[j]),其中j=!我

Numpy乘法并创建新列表B[i]=乘积(A[j]),其中j=!我,numpy,numpy-ndarray,Numpy,Numpy Ndarray,创建一个一维数组B,其中B[i]是所有a[j]的乘积,其中j!=一, 例如:如果A={2,1,5,9},那么B将是{45,90,18,10}这里有一种方法将A作为数组- In [59]: A2D = np.repeat(A[None],len(A),axis=0) In [60]: np.fill_diagonal(A2D,1) In [61]: A2D.prod(1) Out[61]: array([45, 90, 18, 10]) 或者使用np.prod- In [71]: A.pro

创建一个一维数组B,其中B[i]是所有a[j]的乘积,其中j!=一,


例如:如果A={2,1,5,9},那么B将是{45,90,18,10}

这里有一种方法将
A
作为数组-

In [59]: A2D = np.repeat(A[None],len(A),axis=0)

In [60]: np.fill_diagonal(A2D,1)

In [61]: A2D.prod(1)
Out[61]: array([45, 90, 18, 10])
或者使用
np.prod
-

In [71]: A.prod()/A
Out[71]: array([45., 90., 18., 10.])
或使用
掩蔽
-

In [85]: mask = ~np.eye(len(A),dtype=bool)

In [86]: np.broadcast_to(A,mask.shape)[mask].reshape(len(A),-1).prod(1)
Out[86]: array([45, 90, 18, 10])