保存数据时,numpy数组的形状正在发生变化

时间:2016-09-13 05:55:17

标签: python numpy saving-data

我定义了以下数组:

self._list = np.zeros((1, 180))

在类

init 方法中

lidar_data = np.zeros((1, 180))

在同一类

调用方法中 无限期地调用

调用方法。

我想保存激光雷达传感器的数据并分析我正在做的事情,

self._list = np.vstack((self._list, lidar_data[None, :]))

当我打印lidar_data.shape时,

时会出现(1,180)
self._list = np.vstack((self._list, lidar_data[None, :]))

已注释掉,但未注释时,

lidar_data.shape出现(1,0)

因此我无法保存数据并收到以下错误

  File "/usr/local/lib/python2.7/dist-packages/numpy/core/shape_base.py", line 230, in vstack
    return _nx.concatenate([atleast_2d(_m) for _m in tup], 0)
ValueError: all the input array dimensions except for the concatenation axis must match exactly

为什么lidar_data.shape的值会发生变化? 保存数据的最佳方法是什么?

编辑:

尽管lidar_data最初的形状为(1,180),但在获取数据之后它的形状为(180, ),所以通过lidar_data[None, :]我得到的形状为(1, 180)。

编辑2:

lidar_data = np.zeros((1, 180))
lidar_data = controller.sensor(33).getMeasurements()
lidar_data = np.array(lidar_data) #shape (180, )
lidar_data = lidar_data[None, :]  #shape (1, 180)


print 'self._list: ', self._list.shape #shape (1, 180)
print 'lidar_data: ', lidar_data.shape #shape(1, 180)
#self._list = np.vstack((self._list, lidar_data))


This works fine,and the output is


self._list:  (1, 180)
lidar_data:  (1, 180)


the problem arises when

print 'self._list: ', self._list.shape
print 'lidar_data: ', lidar_data.shape
self._list = np.vstack((self._list, lidar_data))

当我运行脚本时,我收到以下错误,

self._list:  (1, 180)
lidar_data:  (1, 0)
 File "/usr/local/lib/python2.7/dist-packages/numpy/core/shape_base.py", line 230, in vstack
    return _nx.concatenate([atleast_2d(_m) for _m in tup], 0)
ValueError: all the input array dimensions except for the concatenation axis must match exactly

0 个答案:

没有答案