【问题标题】:ValueError: Must pass 2-d input. shape=(1, 50, 2)ValueError:必须通过二维输入。形状=(1, 50, 2)
【发布时间】:2021-08-14 02:00:50
【问题描述】:

我打算列出 50 个随机数,从 1 到 100,然后取数字的平方和平方根,然后我会将它们放入一个不错的 PD.Dataframe(第一个列表是随机数其中是行,另外两个列表是列)。 我的代码如下所示:

import random
import math
import numpy as np
import pandas as pd
y = random.sample(range(1, 100), 50)
y1 = [f**2 for f in y]
y2 = [round(math.sqrt(f2)) for f2 in y]
whole = y + y1 + y2
whole2 = (np.array(whole)).reshape((50,3))
df = pd.DataFrame([whole2[:,1:]], index=whole2[:,0], columns=['Number', 'Square','Square Root'])

如果有人能告诉我哪里以及如何出错,我将不胜感激。谢谢!

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

    你的逻辑有点不对劲。我认为 np.stack 在这里也更直观一些。如果您只想随机数一次,也可以从堆栈中删除 y。

    import random
    import math
    import numpy as np
    import pandas as pd
    y = random.sample(range(1, 100), 50)
    y1 = [f**2 for f in y]
    y2 = [round(math.sqrt(f2)) for f2 in y]
    whole = np.stack([y1, y2], axis=-1)
    df = pd.DataFrame(whole, index=y, columns=['Square','Square Root'])
    

    【讨论】:

    • 非常感谢 Micheal,但我正在寻找一个数据框,其中行作为随机数,两列作为平方和平方根。而且我对熊猫还很陌生,所以请告诉我我有一个误解。
    • @Ashape 你能澄清一下吗?你的意思是最左边的数字应该是随机数吗?这里的两列不是已经是平方和平方根了吗?
    • 不,我的意思是我希望行名是 y,而不是三列,如果我没有指定,对不起。
    • 非常感谢 Micheal!这就是我一直在寻找的答案!
    猜你喜欢
    • 1970-01-01
    • 2022-01-25
    • 2021-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-04
    • 1970-01-01
    相关资源
    最近更新 更多