【问题标题】:"Too many indices for array" Error in PythonPython中的“数组索引过多”错误
【发布时间】:2021-07-20 09:24:18
【问题描述】:

以下所有值都是整数/浮点数。

# atomic density of Pu
MPu = 239.0
NPu = np.array(((p*avo)/(MPu))*cm2tobarns)

# atomic density of U
MU = 238.07
NU = np.array(((p*avo)/(MU))*cm2tobarns)

这里是被调用的矩阵/数组

Ugroup = np.array([[1.28, 0.78, 0.2, 0.03, 0.003, 0, 0],
       [0, 1.05, 0.42, 0.01, 0.01, 0, 0],
       [0, 0, 0.33, 0.04, 0.005, 0.0009, 0],
       [0, 0, 0, 0.29, 0.003, 0.0005, 0],
       [0, 0, 0, 0, 0.18, 0.02, 0],
       [0, 0, 0, 0, 0, 0, 0.09, 0],
       [0, 0, 0, 0, 0, 0, 0.01]])

Pugroup = np.array([[0.66, 0.6, 0.19, 0.04, 0.005, 0, 0],
       [0, 0.64, 0.15, 0.03, 0.006, 0, 0],
       [0, 0, 0.31, 0.05, 0.01, 0.0009, 0],
       [0, 0, 0, 0.18, 0.01, 0.0005, 0],
       [0, 0, 0, 0, 0.13, 0.02, 0],
       [0, 0, 0, 0, 0, 0.09, 0],
       [0, 0, 0, 0, 0, 0, 0.01]])

这是我正在尝试做的一部分。我不断收到第一行的错误消息。


Sig12 = (Pugroup[0,0]*NPu) + (Ugroup[0,0]*NU)
Sig13 = (Pugroup[0,1]*NPu) + (Ugroup[0,1]*NU)
Sig14 = (Pugroup[0,2]*NPu) + (Ugroup[0,2]*NU)
Sig15 = (Pugroup[0,3]*NPu) + (Ugroup[0,3]*NU)
Sig16 = (Pugroup[0,4]*NPu) + (Ugroup[0,4]*NU)
Sig17 = (Pugroup[0,5]*NPu) + (Ugroup[0,5]*NU)
Sig18 = (Pugroup[0,6]*NPu) + (Ugroup[0,6]*NU)

上面是我的代码,我试图将特定值乘以一个常数,然后将它们加在一起以进行进一步计算。但是,我不断收到此错误。我尝试将常量设为数组,但这不起作用。我不确定是什么。

【问题讨论】:

  • 请为我们可以用于测试和修改解决方案的问题提供一个运行示例。在示例中包含失败的回溯。
  • 例如,在Ugroup 中,您有不同大小的列表(一些 7,一些 8)并且没有声明的数据类型,因此 numpy 正在创建一个 Python 列表的一维数组。在这种情况下,您需要执行Ugroup[0][1],其中第一个索引 numpy 数组,第二个索引 python 列表。它们都是 7 个值列表,numpy 将创建一个二维数组,0,1 可以工作。请制作一个工作示例,以便我们确定这是否是问题并发布答案。

标签: python arrays matrix


【解决方案1】:

您不需要使用逗号进行索引,而是使用 [0][0] 等等

【讨论】:

  • 你能举一个更具体的例子来澄清你的答案吗?
  • 调用各个组元素时,需要使用双方括号,因为是嵌套数组
  • 逗号适用于 n 维 numpy 数组。我认为这里的问题是 OP 有一个一维的 python 列表数组。
  • @jahnLudvik 请edit 你的问题显示一个完整的例子,包括变量名和括号符号。
猜你喜欢
  • 1970-01-01
  • 2018-03-04
  • 1970-01-01
  • 2019-11-16
  • 1970-01-01
  • 2016-09-06
  • 2015-09-09
  • 2019-07-22
  • 2019-06-23
相关资源
最近更新 更多