python - 计算数组列表的概率时出错

标签 python arrays numpy

只需将每个元素的值除以所有数组元素的总和,即可为数组的每个元素分配概率。我正在尝试使用 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: non-broadcastable output operand with shape () doesn't match the broadcast shape (10)

我不明白为什么会发生此错误,尤其是从文件运行时。有人可以向我解释一下并帮助解决问题吗? 非常感谢!

最佳答案

sum__builtin__.sum,它不知道如何对 NumPy 数组求和,因此只返回数组不变。发生错误的原因是您尝试将奇异矩阵 e 除以 10x10 矩阵 s

你想要s = np.sum(buffer)

整个代码可以简化为:

self.probs.append(array / np.sum(array))

关于python - 计算数组列表的概率时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10978171/

相关文章:

python - 创建均匀随机四元数和两个四元数的乘法

javascript - 努力更新对象数组中的列表

python - 查找 NumPy 数组中出现频率最高的数字

python - 如何返回最大尺寸的图像

python - Python 中最短的数独求解器 - 它是如何工作的?

java - 在双数组中尝试并捕获未按我的预期工作

arrays - 按下按钮时将生成的单词保存到单词数组/列表中

python - 加速 Python 中的列表处理

python - 当发生套接字错误时,如何从异常中获取其错误代码?

python - 在Python中查找与数据框元素列表相对应的索引列表