如何堆叠形状n的逐列(x,)向量,其中x可以是任何数字?
例如,
from numpy import *
a = ones((3,))
b = ones((2,))
c = vstack((a,b)) #
c = vstack((a[:,newaxis],b[:,newaxis])) #
hstack可以正常工作,但是沿着错误的维度连接。
参考方案
简短答案:您不能。 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]一样对待它(对它进行迭代以执行操作,而不是使用向量化的惯用法)。
存在几种可能的解决方法。最简单的方法是将a和b强制为相同的长度,也许使用masked arrays或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],