您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

如何在NumPy中堆叠不同长度的向量?

如何在NumPy中堆叠不同长度的向量?

简短答案:您不能。NumPy本机不支持锯齿数组。

长答案:

>>> a = ones((3,))
>>> b = ones((2,))
>>> c = array([a, b])
>>> c
array([[ 1.  1.  1.], [ 1.  1.]], dtype=object)

给出一个 可能或可能不 符合您预期的数组。例如,它不支持诸如sum或之类的基本方法reshape,因此您应该像对待普通的python列表那样对待[a, b]它(对它进行迭代以执行操作而不是使用向量化的惯用法)。

存在几种可能的解决方法。最简单的是强迫ab以共同的长度,可能使用掩蔽阵列或NaN到信号,一些索引在某些行无效。例如,这b一个掩码数组:

>>> ma.array(np.resize(b, a.shape[0]), mask=[False, False, True])
masked_array(data = [1.0 1.0 --],
             mask = [False False  True],
       fill_value = 1e+20)

可以将其堆叠a如下:

>>> ma.vstack([a, ma.array(np.resize(b, a.shape[0]), mask=[False, False, True])])
masked_array(data =
 [[1.0 1.0 1.0]
 [1.0 1.0 --]],
             mask =
 [[False False False]
 [False False  True]],
       fill_value = 1e+20)

(出于某些目的,scipy.sparse可能也很有趣。)

其他 2022/1/1 18:25:53 有468人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶