如何将一列int附加到numpy的2D浮点矩阵中?

时间:2019-05-08 03:54:05

标签: python numpy

我有一排整数要添加为2D浮点数矩阵的一列。因此,当合并时,第一列将是整数列,第二列将是2D矩阵的第一列,最后一列将是矩阵的最后一列。

我尝试将问题仅隔离到1行,但仍然无法正常工作。这是最简单的例子

url(for:in:appropriateFor:create:)

输出

tee = np.array( [[ 0.3322441,  -0.34410527, -0.1462533 , 0.35244817, -0.3557416, -0.3362794 ], [ 0.9750831,  -0.24571404 , 0.12960567,  0.14683421  ,0.00650549, -0.21060513]] )

zeros =  np.array([0])

all_data = np.hstack((zeros, tee))

所需的输出

ValueError                                Traceback (most recent call last)
<ipython-input-34-02aa17f12182> in <module>()
----> 1 all_data = np.hstack((zeros, tee))

/usr/local/lib/python3.6/dist-packages/numpy/core/shape_base.py in hstack(tup)
    336     # As a special case, dimension 0 of 1-dimensional arrays is "horizontal"
    337     if arrs and arrs[0].ndim == 1:
--> 338         return _nx.concatenate(arrs, 0)
    339     else:
    340         return _nx.concatenate(arrs, 1)

ValueError: all the input arrays must have same number of dimensions

2 个答案:

答案 0 :(得分:1)

在NumPy数组中混合数据类型的唯一方法是使用数据类型:np.object。可以这样隐式完成:

all_data = np.asarray((zeros, *tee))

或明确地是这样的:

all_data = np.asarray((zeros, *tee), dtype=np.object)

答案 1 :(得分:1)

您可以使用np.column_stack

all_data = np.column_stack(([0]*len(tee),tee))

这将产生以下输出:

print (all_data)

array([[ 0.        ,  0.3322441 , -0.34410527, -0.1462533 ,  0.35244817,
    -0.3557416 , -0.3362794 ],
   [ 0.        ,  0.9750831 , -0.24571404,  0.12960567,  0.14683421,
     0.00650549, -0.21060513]])

您的方法不起作用的原因是因为您试图将一个元素的列添加到垂直轴长度2的2D数组之前。但是,上述方法将整数转换为浮点数。如果这是不希望的,则可能需要查看可以创建为以下列表的列表:

all_data = [[0]]+tee.tolist()

产生输出:

print (all_data)

[[0],
[0.3322441, -0.34410527, -0.1462533, 0.35244817, -0.3557416, -0.3362794],
[0.9750831, -0.24571404, 0.12960567, 0.14683421, 0.00650549, -0.21060513]]