使用中的维度问题np.concaten公司

2024-06-30 17:06:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个np.数组用户矩阵和另一个列表用户列表。我想将user\u-clust连接到user\u matrix的最后一列。下面是我的代码。在

np.concatenate( (user_matrix, user_clust), 1)

但我得到了一个错误:

^{pr2}$

两个数据集的维度:

user_matrix.shape #(10000, 110)
user_clust.shape  #(10000,)

我知道用户群是一维的,不像二维的用户矩阵,但不知道如何解决这个问题。在


Tags: 数据代码用户列表错误np矩阵数组
1条回答
网友
1楼 · 发布于 2024-06-30 17:06:43

您似乎有一个二维数组,并希望在末尾添加一个向量作为新列:

>>> import numpy as np
>>> mat = np.arange(12).reshape(3,4)
>>> mat
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11]])
>>> vct = np.arange(100, 103)
>>> vct
array([100, 101, 102])
>>> np.concatenate((mat, vct.reshape(vct.shape + (1,))), axis=1)
array([[  0,   1,   2,   3, 100],
       [  4,   5,   6,   7, 101],
       [  8,   9,  10,  11, 102]])

另一个选择是使用np.append

^{pr2}$

还有一个选择是np.hstack

>>> np.hstack( (mat, vct.reshape(vct.shape + (1,))) )
array([[  0,   1,   2,   3, 100],
       [  4,   5,   6,   7, 101],
       [  8,   9,  10,  11, 102]])

诀窍

在所有情况下,都需要将向量vct重塑为列向量:

^{4}$

备选方案

根据hpaulj在评论中的建议,将vct转换为列向量的另一种方法是使用以下形式:

>>> vct[..., None]
array([[100],
       [101],
       [102]])
>>> np.concatenate((mat, vct[..., None]), axis=1)
array([[  0,   1,   2,   3, 100],
       [  4,   5,   6,   7, 101],
       [  8,   9,  10,  11, 102]])

相关问题 更多 >