【发布时间】:2012-06-11 10:13:15
【问题描述】:
可以通过简单地将每个元素的值除以所有数组元素的总和来为数组的每个元素分配一个概率。我正在尝试使用 python 来处理一长串 numpy 数组。我的代码:
def calc_probs(self, array_list):
for array in array_list:
buffer=array.astype("float")
s=sum(buffer)
for e in np.nditer(buffer, op_flags=["readwrite"]):
e/=s
self.probs.append(buffer)
此代码应该可以工作。事实上,当它输入到 IPython 的交互模式时它正在工作。结果就是我想要的。但是如果我将代码保存到文件中并运行,我总是会得到以下 ValueError:
ValueError: 具有形状 () 的不可广播输出操作数与广播形状 (10) 不匹配
我不明白为什么会发生此错误,尤其是从文件运行时。任何人都可以向我解释并帮助解决问题吗? 非常感谢!
【问题讨论】:
-
输入是什么样的?
-
你在哪一行得到异常?还有你的意见是什么?
-
输入是一个 numpy 数组的列表,格式为:
array_list = [ np.array, np.array, np.array, ... ]。所有 np 数组都是 2d 并且具有相同的形状 (100x100)。错误发生在第7行e/=s -
对此感到抱歉。现在它被正确命名了