Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何从熊猫数据帧获取2d numpy阵列?-错误的形状_Python_Numpy_Pandas - Fatal编程技术网

Python 如何从熊猫数据帧获取2d numpy阵列?-错误的形状

Python 如何从熊猫数据帧获取2d numpy阵列?-错误的形状,python,numpy,pandas,Python,Numpy,Pandas,我想从pandas dataframedf的一列中获得一个2d numpy数组,每行中都有一个numpy向量。但如果我这样做了 df.values.shape 我得到:(3,)而不是:(3,5) (假设数据帧中的每个numpy向量有5个维度,并且数据帧有3行) 正确的方法是什么?我不确定你想要什么。但是df.values.shape似乎给出了正确的结果 import pandas as pd import numpy as np from pandas import DataFrame df

我想从pandas dataframe
df
的一列中获得一个2d numpy数组,每行中都有一个numpy向量。但如果我这样做了

df.values.shape
我得到:
(3,)
而不是:
(3,5)

(假设数据帧中的每个numpy向量有5个维度,并且数据帧有3行)


正确的方法是什么?

我不确定你想要什么。但是
df.values.shape
似乎给出了正确的结果

import pandas as pd
import numpy as np
from pandas import DataFrame

df3 = DataFrame(np.random.randn(3, 5), columns=['a', 'b', 'c', 'd', 'e'])

print df3
#          a         b         c         d         e
#0 -0.221059  1.206064 -1.359214  0.674061  0.547711
#1  0.246188  0.628944  0.528552  0.179939 -0.019213
#2  0.080049  0.579549  1.790376 -1.301700  1.372702

df3.values.shape
#(3L, 5L)

df3["a"]
#0   -0.221059
#1    0.246188
#2    0.080049

df3[:1]
#     a         b           c           d           e
#0  -0.221059   1.206064    -1.359214   0.674061    0.547711

理想情况下,首先要找到一种不同的方法来定义数据帧,以避免陷入这种情况。但是,如果您的数据帧如下所示:

s = pd.Series([np.random.randint(20, size=(5,)) for i in range(3)])
df = pd.DataFrame(s, columns=['foo'])
#                   foo
# 0   [4, 14, 9, 16, 5]
# 1  [16, 16, 5, 4, 19]
# 2  [7, 10, 15, 13, 2]
然后,您可以通过调用数组列表上的
pd.DataFrame
将其转换为形状为(3,5)的数据帧:

pd.DataFrame(df['foo'].tolist())
#     0   1   2   3   4
# 0   4  14   9  16   5
# 1  16  16   5   4  19
# 2   7  10  15  13   2

pd.DataFrame(df['foo'].tolist()).values.shape
# (3, 5)

您是否尝试过使用df.as_矩阵而不是使用值?或者,您也可以这样做:np.asarray(df['foo'].tolist())df.values返回numpy表示形式