【问题标题】:How to append numpy array to numpy array of different size?如何将numpy数组附加到不同大小的numpy数组?
【发布时间】:2018-07-15 13:57:16
【问题描述】:

我有 2 个要连接的数组:

X_train 的形状是(3072, 50000) y_train 的形状是(50000,)

我想将它们连接起来,这样我就可以一次性洗牌所有索引。我尝试了以下方法,但都不起作用:

np.concatenate([X_train, np.transpose(y_train)])
np.column_stack([X_train, np.transpose(y_train)])

如何连接它们?

【问题讨论】:

  • 连接什么?你有输入维度,你想要什么输出维度? (从 ML 的角度来看,我认为这没有意义)
  • 你不能把Y_train改造成(1,50000)吗?
  • @DavidG 是的,谢谢!顺便说一句,为什么我首先得到 (50000,) ?那是一个numpy数组吗?似乎它是某种向量或列表,idk。我是 numpy 的新手
  • This post 可能有助于区分两者
  • numpy 中,一维数组与二维(或更高)数组一样有用。

标签: python arrays numpy machine-learning


【解决方案1】:

给你一些针对任务的建议,而不是你的问题:不要这样做!

假设X 是您的样本/观察结果,y 是您的目标:

只需生成一个随机排列并在其中创建视图(没有复制或修改),例如(未经测试):

import numpy as np

X = np.random.random(size=(50000, 3072))
y = np.random.random(size=50000)

perm = np.random.permutation(X.shape[0])  # assuming X.shape[0] == y.shape[0]
X_perm = X[perm]  # views!!!
y_perm = y[perm]

提醒:您的 start-shapes 与大多数基于 python 的 ml-tools 不兼容,因为通常的解释是:

  • first-dim / rows:样本
  • second-dim / cols:功能

由于#samples 需要与#target-values y 相同,您会发现我的示例在这方面是正确的,而您的示例需要在X 上进行转置

【讨论】:

    【解决方案2】:

    正如 DavidG 所说,我意识到答案是 y_train 的形状为 (50000,),所以我需要在连接之前对其进行重塑

    np.concatenate([X_train,         
         np.reshape(y_train, (1, 50000))])
    

    不过,这在 Jupyter 中的评估非常缓慢。如果有更快的答案,我将不胜感激

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-01-10
      • 2021-10-12
      • 1970-01-01
      • 1970-01-01
      • 2020-10-22
      • 2017-05-22
      • 1970-01-01
      • 2015-01-29
      相关资源
      最近更新 更多