无法将二维数组重新调整为三维数组以供 Python 中的 RNN 使用。

huangapple go评论168阅读模式
英文:

Can not reshape 2 dimensional array to 3 dimensional array for RNN in python

问题

我无法将数组重塑为三维数组。以下是示例数据集:

  1. import pandas as pd
  2. import numpy as np
  3. df = {
  4. "a": [0.06, 0.07, 0.45, 0.98, 0.97],
  5. "b": [12, 45, 65, 56, 34],
  6. "c": [2, 5, 5, 5, 3],
  7. "d": [23, 55, 25, 15, 34],
  8. "e": [0.0005, 0.55555, 0.383825, 0.4747477415, 0.348344334],
  9. "f": [0.0236, 0.3407, 0.4545, 0.9658, 0.4597],
  10. "g": [70, 90, 123, 154, 99],
  11. }
  12. # 加载到数据帧(DataFrame):
  13. df = pd.DataFrame(df)
  14. print(df)
  1. df.shape
  2. X = df[['a', 'b', 'c', 'd', 'e', 'f']].to_numpy()
  3. y = df['g'].to_numpy()
  4. X

这是我从一个stackoverflow帖子中找到的可能解决方案:

  1. # 将X数据重塑为3D
  2. X = X.reshape(5, 7, -1)

但对我没有起作用。我理解矩阵有其规则,但是否可能将它转换为三维数组?如果你知道的话,能帮我吗?非常感谢!

我想要得到类似于(5,7,3)的数组,最后一维的大小是3。

英文:

I can not reshape the array into 3-dimensional one. Here is the example dataset:

  1. import pandas as pd
  2. import numpy as np
  3. df = {
  4. "a": [0.06 , 0.07, 0.45, 0.98, 0.97 ],
  5. "b": [12,45,65, 56, 34],
  6. "c": [2,5,5, 5, 3],
  7. "d": [23,55,25, 15, 34],
  8. "e": [0.0005,0.55555,0.383825, 0.4747477415, 0.348344334],
  9. "f": [0.0236 , 0.3407, 0.4545, 0.9658, 0.4597 ],
  10. "g": [70 , 90, 123, 154, 99 ],
  11. }
  12. #load into df:
  13. df = pd.DataFrame(df)
  14. print(df)
  1. df.shape
  2. X = df[['a', 'b', 'c','d','e','f']].to_numpy()
  3. y = df['g'].to_numpy()
  4. X

This is what I found as a possible solution from one of the stackoverflow posts

  1. # Reshaping the X data to be 3D
  2. X = X.reshape(5, 7, -1)

But it did not work for me. I understand that matrix has its rules, however, is it possible to convert it into three dimensional array? Could you help me if you know? Thank you very much!

I want to get something like (5,7,3). The array that end with the 3.

答案1

得分: 0

我认为你需要执行以下操作:

  1. X = df[['a', 'b', 'c', 'd', 'e', 'f']].to_numpy()
  2. y = df['g'].to_numpy()

X的形状是(5, 6)

  1. df[['a', 'b', 'c', 'd', 'e', 'f']].to_numpy().reshape(5, 6, -1)

由于你已经将 'g' 移到了 y 中,所以可以这样重塑X:

  1. X = X.reshape(5, 6, -1)

其他变体包括:

  1. X = X.reshape(2, 5, 3)
  2. X = X.reshape(5, 2, 3)
  3. X = X.reshape(10, 1, 3)
  4. X = X.reshape(1, 10, 3)

实际上,这些数字的乘积应该等于形状的乘积。因此,在这种情况下,(5, 6) 的乘积是 30

现在,你想要一个末尾为 3 的三维数组,所以我们需要从前两个维度获取 10

英文:

I think you have to do:

  1. X = df[['a', 'b', 'c','d','e','f']].to_numpy()
  2. y = df['g'].to_numpy()

X.shape is (5, 6)

  1. df[['a', 'b', 'c','d','e','f']].to_numpy().reshape(5,6,-1)

Since you have moved 'g' out to y

  1. X = X.reshape(5, 6, -1)

Other variants are:

  1. X=X.reshape(2, 5, 3)
  2. X=X.reshape(5, 2, 3)
  3. X=X.reshape(10, 1, 3)
  4. X=X.reshape(1, 10, 3)

How we get them, actually the product of these numbers should be the product of shape. So, in this case product of (5,6) is 30.

Now, you want a 3D array with 3 at the end, so we need 10 from the first 2 dimensions.

huangapple
  • 本文由 发表于 2023年3月7日 22:33:56
  • 转载请务必保留本文链接:https://go.coder-hub.com/75663322.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定