【问题标题】:Invalid Number of Arguments when trying to add arrays inside a list using python尝试使用python在列表中添加数组时参数数量无效
【发布时间】:2021-10-21 14:08:51
【问题描述】:

我试图了解为什么我在下面的代码中得到无效的参数数量,以及是否有办法解决它。

代码如下:

import numpy as np

acc_reading = []

a = np.array([0.11e+00, 1.11e-08, 1.11e-02])
b = np.array([0.12e+00, 1.22e-08, 2.22e-02])
c = np.array([3.11e+00, 3.18e-08, 3.33e-02])
d = np.array([3.41e+00, 4.18e-08, 4.31e-02])
e = np.array([0.55e+00, 1.55e-08, 5.31e-02])
f = np.array([0.66e+00, 1.66e-08, 3.66e-02])
g = np.array([0.66e+00, 1.66e-08, 3.66e-02])
h = np.array([0.66e+00, 1.66e-08, 3.66e-02])

ab = np.add(a,b)
cd = np.add(c, d)
ef = np.add(e, f)
i = np.add(g, h)

acc_reading.append(ab)
acc_reading.append(cd)
acc_reading.append(ef)
acc_reading.append(i)

kk = np.add(acc_reading[0], acc_reading[1], acc_reading[2], acc_reading[3])

上述代码的输出为: ValueError:参数数量无效

【问题讨论】:

  • 我正在使用 acc_reading 作为占位符来存储我的数据。实际上,如果我执行 ab = np.add(acc_reading[0], acc_reading[1], acc_reading[2]),我不会出错。另外,数组是在我的原始代码中定义的。
  • 现在你应该得到array(...) 的错误“'module' object is not callable”。您的意思是np.array 而不仅仅是array?请显示一个实际的minimal reproducible example
  • @mkrieger1 你现在可以检查代码了。
  • 你试图将 4 个 acc_reading 元素传递给 np.add 做什么? np.add 接受 2 个参数(数组)。

标签: python-3.x numpy numpy-ndarray


【解决方案1】:

阅读np.addnp.sum 的文档


您的列表 - 4 个大小为 3 的条款

In [213]: acc_reading
Out[213]: 
[array([2.30e-01, 2.33e-08, 3.33e-02]),
 array([6.52e+00, 7.36e-08, 7.64e-02]),
 array([1.21e+00, 3.21e-08, 8.97e-02]),
 array([1.32e+00, 3.32e-08, 7.32e-02])]

所有值加一:

In [214]: np.sum(acc_reading)
Out[214]: 9.5526001622

对行和列求和 - 将 acc_reading 视为 (3,4) 数组:

In [215]: np.sum(acc_reading, axis=0)
Out[215]: array([9.280e+00, 1.622e-07, 2.726e-01])
In [216]: np.sum(acc_reading, axis=1)
Out[216]: array([0.26330002, 6.59640007, 1.29970003, 1.39320003])

您尝试使用np.add(您之前正确使用过)

In [217]: np.add(acc_reading[0], acc_reading[1], acc_reading[2], acc_reading[3])
     ...: 
Traceback (most recent call last):
  File "<ipython-input-217-52b8f942b588>", line 1, in <module>
    np.add(acc_reading[0], acc_reading[1], acc_reading[2], acc_reading[3])
TypeError: add() takes from 2 to 3 positional arguments but 4 were given

只给它 2 个数组:

In [218]: np.add(acc_reading[0], acc_reading[1])
Out[218]: array([6.750e+00, 9.690e-08, 1.097e-01])

更直接的方式:

In [220]: arr = np.array([a+b, c+d, e+f, g+h])
In [221]: arr
Out[221]: 
array([[2.30e-01, 2.33e-08, 3.33e-02],
       [6.52e+00, 7.36e-08, 7.64e-02],
       [1.21e+00, 3.21e-08, 8.97e-02],
       [1.32e+00, 3.32e-08, 7.32e-02]])
In [222]: arr.sum()
Out[222]: 9.5526001622

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-11-10
    • 1970-01-01
    • 2014-08-28
    • 2018-07-18
    • 2019-09-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多