【发布时间】:2020-09-11 00:19:48
【问题描述】:
我在 jupyter 笔记本中使用 astropy 来处理 fit 文件。我正在使用名为 pyKLIP 的第三方应用程序。
谁能解释这个错误消息的结构,因为它有三组括号(逐字,原文如此)。我发现这个错误消息没有这样的结构,它有三组括号,这使得破译它需要什么变得更加困难。
ValueError: operands could not be broadcast together with shapes (109,109) (2,) (109,109)
109,109 只能是适合图像的分辨率,保存在 91 个 109 行 x 109 列的单独帧的 numpy 数组中。
我还不能确定 2,因为我无法在第三方函数中打印打印语句。我所知道的唯一 2 个是由 91 组 x 中心和 y 中心组成的数组。
进入第三方应用程序的规范要求:
输入 = N 个形状为 (y,x) 的图像的形状 (N,y,x) 数组
centers = N 个输入中心的形状 (N,2) 数组,格式为 [x_cent, y_cent]
如果我将这些成员打印为我得到的大小和形状:
dataset.input.size : 1081171
dataset.input.shape : (91, 109, 109)
dataset.centers.size : 182
dataset.centers.shape : (91, 2)
非常感谢任何破译此广播错误的指针。谢谢。
【问题讨论】:
-
当您应用一些带有
out=参数的运算符时,可能会出现这种消息,例如a = np.random.rand(109, 109); b = np.random.rand(2); np.add(a, b, out=a)。 -
您能解释一下您要做什么吗?这是数组不匹配时的一般错误消息。例如,使用 (n x k) 和 (m x l) 添加两个不同大小的数组或矩阵乘法,其中 k != m。
-
“我还不能确定,因为我无法在第三方函数中打印打印语句”如果您想尝试自己调试,请搜索如何使用 pdb。这是一项非常宝贵的技能。
标签: python numpy broadcast astropy operands