我试图从熊猫数据帧为“label”列创建一个NumPy数组
我的df:
label vector
0 0 1:0.044509422 2:-0.03092437 3:0.054365806 4:-...
1 0 1:-0.007471546 2:-0.062329583 3:0.012314787 4...
2 0 1:-0.009525825 2:0.0028720177 3:0.0029517233 ...
3 1 1:-0.0040618754 2:-0.03754585 3:0.008025528 4...
4 0 1:0.039150625 2:-0.08689039 3:0.09603256 4:0....
... ... ...
59996 1 1:0.01846487 2:-0.012882819 3:0.035375785 4:-...
59997 1 1:0.01435293 2:-0.00683616 3:0.009475072 4:-0...
59998 1 1:0.018322088 2:-0.017116712 3:0.013021051 4:...
59999 0 1:0.014471473 2:-0.023652712 3:0.031210974 4:...
60000 1 1:0.00888336 2:-0.006902163 3:0.022569133 4:0...
正如你们看到的,我有两个列:标签和向量。对于col标签,我使用此解决方案:
y = pd.DataFrame([df.label])
print(y.astype(float).to_numpy())
print(y)
因此,我有以下几点:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ... 59985 59986 59987 59988 59989 59990 59991 59992 59993 59994 59995 59996 59997 59998 59999 60000
label 0 0 0 1 0 0 0 0 0 0 0 1 0 1 0 1 ... 1 1 1 0 1 0 0 1 1 1 1 1 1 1 0 1
[1 rows x 60001 columns]
但是,预期产出应为:
0
0 0
1 0
2 0
3 1
... ...
[60001 rows x 1 columns]
我想要一个带有[60001 rows x 1 columns]
的数组,而不是带有[1 rows x 60001 columns]
的数组
谢谢你的时间
如果从数据帧开始
然后按名称选择一列,您将得到一个系列:
该系列的
to_numpy
是一个1d数组:但您已经获取了该系列,并将其转换回数据帧:
这是你的意图吗?在任何情况下,提取的阵列都是二维的:
我们可以重塑它,或者将其“转置”:
如果我们从
y
表达式中省略[],我们将得到不同的数据帧和所需的“列”数组:另一个选项是选择带有列表的列:
Series
是1dnumpy
数组的pandas
版本。它有行索引,但没有列索引。一个DataFrame
是二维的,有行和列请记住
numpy
数组可以有形状(3,),(1,3)和(3,1),所有形状都具有相同的3个元素我想要一个具有[60001行x 1列]的数组,而不是一个具有[1行x 60001列]的数组。:如果我正确理解您的问题,并且您需要重塑您的数组,请使用:
这将把你的数组转换成一个只有一列的形状,并将自动为你确定行数(分配给-1的尺寸是根据数组尺寸和其他尺寸形状自动计算出来的)。因此,您可以执行以下任一操作:
您提议的方式+重塑:
或@cs95的建议答案(结果相同):
相关问题 更多 >
编程相关推荐