【问题标题】:how to concatenate the following two matrix?如何连接以下两个矩阵?
【发布时间】:2016-12-28 01:41:12
【问题描述】:

你好,我有一个名为 tfidf2 的矩阵,这个矩阵的形状是 (11159, 1985) 它有 11159 行和 1985 列,我想将一个新矩阵连接到这个矩阵,称为 datesNumpy 的矩阵,其形状为 (11159, 12),它们具有相同的行数,所以是可能的要连接它,称为 tfidf3 的新矩阵的形状应该是 (11159,1997),

import numpy as np
tfidf2 = tdf.transform(list_cluster)
print("Shape tfidf2",tfidf2.shape)
listAux=[]
for l in listMonth:
        listAux.append([int(y) for y in l])
datesNumpy=np.array([np.array(xi) for xi in listAux])
print("Shape datesNumpy",datesNumpy.shape)

我试过了:

tfidf3=np.stack((tfidf2, datesNumpy), axis=-1)

不管怎样,我感谢支持以克服这种情况:

Shape tfidf2 (11159, 1985)
Shape datesNumpy (11159, 12)
Traceback (most recent call last):
  File "Main.py", line 235, in <module>
    tfidf3=np.stack((tfidf2, datesNumpy), axis=-1)
  File "/usr/local/lib/python3.5/dist-packages/numpy/core/shape_base.py", line 339, in stack
    raise ValueError('all input arrays must have the same shape')
ValueError: all input arrays must have the same shape

在收到这里的反馈后,我尝试了:

tfidf3=np.concatenate([tfidf2, datesNumpy], axis=1)

但我得到了:

Traceback (most recent call last):
  File "Main.py", line 235, in <module>
    tfidf3=np.concatenate([tfidf2, datesNumpy], axis=1)
ValueError: zero-dimensional arrays cannot be concatenated

【问题讨论】:

  • np.hstack 应该这样做
  • stackoverflow.com/questions/41338677/… - 此海报之前尝试过hstack。这里还有一些我们不知道的信息。 @neo33 - 你应该编辑你的旧帖子,而不是在没有新信息的情况下重复它。你已经在那个帖子上和我对话了。
  • @hpaulj,感谢您的支持,您需要什么样的信息来帮助我?,现在在拥有纯 numpy 数组之后,我再次尝试感谢您的支持
  • tfidf2 =np.zeros((11159, 1985)); datesNumpy =np.zeros((11159, 12)); np.concatenate((tfidf2, datesNumpy), axis=1).shape。按预期得到(11159, 1997)。你的错误信息让我相信你没有告诉我们准确的信息,所以投票结束。
  • @Ran 我终于达到了结果谢谢我必须在一切之前执行 tfidf2=tfidf2.toarray() ,对不起缺点

标签: python numpy


【解决方案1】:

numpy.stack(arrays, axis=0)

沿新轴加入一系列数组。

axis 参数指定新轴在 结果的维度。例如,如果axis=0,它将是第一个 维度,如果axis=-1,它将是最后一个维度。

参数:

数组:array_like 的序列每个数组必须具有相同的形状

axis : int, optional 输入数组沿其堆叠的结果数组中的轴。

返回:

堆叠:ndarray 堆叠数组比输入数组多一维。

根据文档必须具有相同的形状。

你必须是concatenate

例子:

tfidf2 = np.zeros((11159, 1985))
datesNumpy = np.ones((11159, 12))

tfidf3=np.concatenate([tfidf2, datesNumpy], axis=1)
print(tfidf3.shape)

输出:

(11159, 1997)

【讨论】:

  • 感谢您的支持,但我无法实现所需的矩阵,
  • @neo33 你确定你的矩阵有数据吗?在连接之前打印 tfidf2.shape 和 datesNumpy.shape
  • 我尝试执行打印并且得到 (11159, 12) (11159, 1985),我相信它可能失败了,因为 tfidf2 是一个稀疏矩阵,
  • 感谢您的支持一切正常我需要在连接之前添加 tfidf2=tfidf2.toarray()
  • 稀疏?你为什么不回说2个问题?这使一切变得不同。稀疏矩阵有自己的“堆栈”方法。我应该推送更多信息,甚至是tfidf 数组的示例。挑剔的人坚持使用最小的、可验证的等示例。
猜你喜欢
  • 2020-10-14
  • 2020-04-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-27
  • 1970-01-01
  • 2021-01-01
相关资源
最近更新 更多