Numpy数组M维元素乘法

2024-04-29 20:13:13 发布

您现在位置:Python中文网/ 问答频道 /正文

问题解释

我有四个numpy数组

n维的A

B/m尺寸

C/o尺寸

n维的D

我还有每个维度的索引列表

Aindexes = Ia[Ia1, Ia2, … , Ian]

Bindexes = Ib[Ib1,Ib2, …. , Ibm]

Cindexes = Ic[Ia1, Ic1, Ic2,  …. , Ico]

Dindexes = Ia[Ia1, Ia2, … Ian]

我需要执行三个操作,但我需要它根据索引的匹配而有不同的行为:

R = A * B  (all different indexes) =
RIndexes [Ia1, Ia2, … , Ian, Ib1, Ib2, … Ibm] 
Rvalues it’s an elementwise multiplication of all elements

R = A * C (Some indexes equal)
RIndexes [Ia1, Ia2, … Iam, Ic1, Ic2, … Ico]
Rvalues it’s an elementwise multiplication of all elements not repeating the indexes that are equal 

R = A * D (all equal indexes) 
Rindexes [Ia1, Ia2, … Iam] 
Rvalues = A[Iam] * D[Iamij]

二维表格的实例

A [Index1[3],Index2[2]] = [[1,2],[1,2],[1,2]]

B [Index4[3], Index3[2]] = [[3,4],[3,4],[3,4]]

C [Index1[3], Index3[2]] = [[3,4],[3,4],[3,4]]

D[Index1[3],Index2[2]] = [[3,4],[3,4],[3,4]]

A*B

一些指标的评价

R[Index1[3],Index2[2 = 1],Index4[3],Index3[2 = 1]] = [[3,3,3],[3,3,3],[3,3,3]]

R[Index1[3],Index2[2 = 2],Index4[3],Index3[2 = 1]] = [[6,6,6],[6,6,6],[6,6,6]]

R[Index1[3],Index2[2 = 1],Index4[3],Index3[2 = 2]] = [[4,4,4],[4,4,4],[4,4,4]]

R[Index1[3],Index2[2 = 2],Index4[3],Index3[2 = 2]] = [[8,8,8],[8,8,8],[8,8,8]]

总计

RIndex1[3],Index2[2],Index4[3],Index3[2]] = [[[[3,3,3],[3,3,3],[3,3,3]],[[4,4,4],[4,4,4],[4,4,4]]],[[[6,6,6],[6,6,6],[6,6,6]],[[[8,8,8],[8,8,8],[8,8,8]]]]]

A*C

一些指标的评价

R[Index1[3],Index2[2],Index3[2 = 1]] = [[3,6],[3,6],[3,6]]

R[Index1[3],Index2[2],Index3[2 = 2]] = [[4,8],[4,8],[4,8]]

总计

R[Index1[3],Index2[2],Index3[2]] = [[[3,6],[3,6],[3,6]]
,[[4,8],[4,8],[4,8]]]

A*D

R[Index1[3],Index2[2]] = [[1,4],[1,4],[1,4]]

我的问题是如何用m维的numpy实现这一点


Tags: numpy尺寸equalalliamiaindexesian