首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将一列整数附加到numpy中的浮点数的2D矩阵?

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

Stack Overflow用户
提问于 2019-05-08 11:54:05
回答 2查看 70关注 0票数 0

我有一行整数,我想将其作为列添加到浮点数的2D矩阵中。因此,当组合时,第一列将是整数列,第二列将是2D矩阵的第一列,最后一列将是矩阵的最后一列。

我试着将问题隔离到只有1行,但我仍然无法让它工作。下面是最小的例子

代码语言:javascript
复制
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))

输出

代码语言:javascript
复制
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

期望输出

代码语言:javascript
复制
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]]
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-05-08 12:02:58

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

代码语言:javascript
复制
all_data = np.asarray((zeros, *tee))

或者明确地像这样:

代码语言:javascript
复制
all_data = np.asarray((zeros, *tee), dtype=np.object)
票数 1
EN

Stack Overflow用户

发布于 2019-05-08 12:07:06

您可以使用np.column_stack

代码语言:javascript
复制
all_data = np.column_stack(([0]*len(tee),tee))

这将产生以下输出:

代码语言:javascript
复制
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的二维数组中。但是,上面的方法将整数转换为浮点数。如果这是不需要的,您可能需要查看列表列表,该列表可以创建为:

代码语言:javascript
复制
all_data = [[0]]+tee.tolist()

这将产生输出:

代码语言:javascript
复制
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]]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56033292

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档