python-3.x 如何将X和Y从(300,1000,50)重新整形为(300000,50)?

hmtdttj4  于 2022-11-19  发布在  Python
关注(0)|答案(1)|浏览(171)

我有一个数据集:

  1. X.shape = (300, 1000, 50)
  2. Y.shape = (300,)
  • Y为真值(4个选项:[0..3])

我要将X重新整形为:(300000, 50)和Y到(300000,)

  • 新的X.shape将为[X.shape[0]*X.shape[1], X.shape[2]]
  • 新的Y.shape将是[X.shape[0]*X.shape[1],],并且它将包含Y的正确重复值(根据新的形状)。

我该怎么做?

nfzehxib

nfzehxib1#

你可以做

  1. X = X.reshape(-1, Y.shape[-1])

但是,由于广播向右对齐(隐式地预先添加单元维度,而不是追加),因此如何广播数组变得不清楚。
您可以重复Y的元素:

  1. Y = np.repeat(Y, 1000)

或整个阵列本身:

  1. Y = np.tile(Y, 4)

两者都是矫枉过正。
只需使用适当的广播即可:

  1. # X untouched
  2. Y = Y[:, None, None]

或等同于

  1. Y = Y.reshape(-1, 1, 1)
展开查看全部

相关问题