【问题标题】:The size of the array while getting the value from the function从函数中获取值时数组的大小
【发布时间】:2021-06-07 17:35:24
【问题描述】:

在将points = convert2xy(scan) 传递给扫描为 5000x1040 二维数组的函数时,我遇到了错误。

ValueError:操作数无法与形状一起广播 (5000,1040) (5000,)

def convert2xy(scan, fov=260, min_dist=0.02):
 
    angles = np.radians(np.linspace(-fov/2, fov/2, len(scan)))
    points = np.vstack([scan*np.cos(angles), scan*np.sin(angles)]).T

return points[scan>min_dist]

【问题讨论】:

  • angles 创建自 linspace 是形状为 (5000,) 的 a1d 数组。它需要是 (5000,1) 形状才能进行以下乘法运算。您可能需要阅读broadcasting

标签: python arrays function numpy np


【解决方案1】:

正如错误消息中所说,这是因为您在垂直堆栈中将大小为 (5000, 1040) 的 scan 与大小为 (5000,) 的 angles 相乘。是否要将angles 的每个值与scan 的相应行相乘?如果是这样,您可以使用scan * angles[np.newaxis,:],因此拥有points,如下所示:

points = np.vstack([scan*np.cos(scan * angles[:, np.newaxis]), 
                    scan*np.sin(scan * angles[:, np.newaxis])]).T

【讨论】:

  • 该函数将保持不变,但我需要在调用该函数时更改行。
  • 如果这是一个问题,那么是的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-18
  • 2023-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多