ValueError:操作数无法与形状一起广播 (2501,201) (2501,)
Posted
技术标签:
【中文标题】ValueError:操作数无法与形状一起广播 (2501,201) (2501,)【英文标题】:ValueError: operands could not be broadcast together with shapes (2501,201) (2501,) 【发布时间】:2018-12-26 13:09:00 【问题描述】:我是 python 新手,所以请善待。
我正在尝试将两个 Numpy 数组与 np.logical_or
函数进行比较。当我运行以下代码时,Percentile = np.logical_or(data2 > Per1, data2 < Per2)
上出现错误
行说明
ValueError: 操作数不能与形状一起广播 (2501,201) (2501,)
data = 1st Array
data2 = 2nd Array
Per1 = np.percentile(data, 10, axis=1)
Per2 = np.percentile(data, 90, axis=1)
Percentile = np.logical_or(data2 > Per1, data2 < Per2)
print(Percentile)
我检查了两个数组的形状,它们看起来都具有相同的形状(2501,201)
(2501,201)
。因此,我很难理解为什么会发生此错误,任何帮助将不胜感激。
【问题讨论】:
【参考方案1】:如果您检查 Per1 或 Per2 的形状,您会看到它的值为 (2501,)
(因为您沿轴 1 取百分位数),因此这两个表达式 data2 > Per1
、data2 < Per2
都会引发错误,为了使您的代码正常工作,您需要使用reshape
使两个操作数的形状兼容,这会将您的行向量转换为列向量:
Per1 = np.percentile(data, 10, axis=1).reshape(-1, 1)
Per2 = np.percentile(data, 90, axis=1).reshape(-1, 1)
【讨论】:
【参考方案2】:您需要添加一个维度(通过使用[:, None]
到Per1
和Per2
使它们可广播到数据。
Percentile = np.logical_or(data2 > Per1[:, None], data2 < Per2[:, None])
【讨论】:
这样排序了。非常感谢。以上是关于ValueError:操作数无法与形状一起广播 (2501,201) (2501,)的主要内容,如果未能解决你的问题,请参考以下文章
如何修复Tensorflow中的“ValueError:操作数无法与形状(2592,)(4,)一起广播”?
SpaCy - ValueError:操作数无法与形状一起广播(1,2)(1,5)
ValueError:操作数无法与形状一起广播 - inverse_transform- Python
ValueError:在进行加权预测时,操作数无法与形状 (7,) (624,3) 一起广播