gpt4 book ai didi

python - 如何计算矩阵中每个单元格占列总和的比例?

转载 作者:太空宇宙 更新时间:2023-11-04 03:36:08 26 4
gpt4 key购买 nike

我是使用 python 的绝对初学者。

我的问题如下....

示例:

在没有定义列数和行数的表的基础上,你需要计算如下所示的表达式...

    A  B  C  D  E .. n
a 1 3 5 3 5 .. n
b 4 3 4 2 6 .. n
. . . . . . .. n
.
m . . . . . .. n
X1 X2 X3 X4 X5.. Xn

X1 = (Aa / SUM A)^2 + (Ab / SUM A)^2+ .. +(Am / SUM A)^2
X2 = (Ba / SUM B)^2 + (Bb / SUM B)^2+ .. +(Bm / SUM B)^2
.
.
Xn ....

有谁知道如何创建解决图中所示问题的表达式?

我应该为现有代码插入定义一个表达式....

  values = [] # store the sum values here.
fields = arcpy.ListFields(fc, "*")

# get the OID/FID field name to skip
desc = arcpy.Describe(fc)
if desc.hasOID:
OIDname = desc.OIDFieldName.upper()
else:
OIDname = ""

for field in fields:
if field.name.upper() != OIDname: # skip the OID/FID field.
if field.type in ("Double", "Integer", "Single"):
# sum each suitable field, but not the NULL ones - they would be bad
with arcpy.da.SearchCursor(fc,field.name,field.name + " is not NULL") as sCur:
thisValue = 0
for row in sCur:
thisValue = ???????? # expression -- (A1 / SUM A)^2+...
values.append(thisValue) # this will be the inserted row
fieldNameList.append(field.name)

with arcpy.da.InsertCursor(fc, fieldNameList) as cur:
cur.insertRow(values)

在代码中我使用了 arcpy 和 numpy ...

提前致谢

最佳答案

使用 NumPy 的广播规则,您可以避免循环执行如下操作:

s = a.sum(axis=0)
x = ((a/s)**2).sum(axis=0)

a 是您的 m X n 矩阵。

关于python - 如何计算矩阵中每个单元格占列总和的比例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28993806/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com