Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/279.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 如何将元组列表更改为numpy数组?_Python_Arrays_Pandas_Numpy_Dataframe - Fatal编程技术网

Python 如何将元组列表更改为numpy数组?

Python 如何将元组列表更改为numpy数组?,python,arrays,pandas,numpy,dataframe,Python,Arrays,Pandas,Numpy,Dataframe,我有一个数据框,如下所示: id points 0 1 (-2.3, 7) 1 1 (-5, 7) 2 1 (-6.9, 5) 3 2 (2, 5.9) 4 2 (-0.3, -8) 我正在尝试使用groupby id并获得如下所示的numpy数组: df2 = df.groupby(["id"])["points"]\ .apply(lambda x : np.array(x.values)).re

我有一个数据框,如下所示:

  id      points
0  1      (-2.3, 7)
1  1      (-5, 7)
2  1      (-6.9, 5)
3  2      (2, 5.9)
4  2      (-0.3, -8)
我正在尝试使用groupby id并获得如下所示的numpy数组:

df2 = df.groupby(["id"])["points"]\
          .apply(lambda x : np.array(x.values)).reset_index()
这是可行的,但它会更改为元组列表(如下所示),如何更改为numpy数组?或者我所考虑的元组列表实际上是一个numpy 2d数组

  id   points
0  1   [ (-2.3, 7), (-5,7), (-6.9,5) ]
1  2   [ (2, 5.9), (-0.3, -8) ]

如果您想要的是元组的numpy数组,那么这就是您已经得到的:

In [8]: df.groupby('id').points.apply(np.asarray).values
Out[8]: 
array([array([(-2.3, 7), (-5, 7), (-6.9, 5)], dtype=object),
       array([(2, 5.9), (-0.3, -8)], dtype=object)], dtype=object)
但是,如果要将输出转换为2D数组而不是元组数组,请继续阅读


选项1

在groupby之前转换
(您可以在不使用
lambda的情况下进行管理):

选项2

在groupby之后转换
(您需要一个
lambda
):


完成后,调用
df.reset\u index
以获得所需的输出。

这里的一个非常好的答案可能会帮助您:实际上,这些数组在
pd中打印时看起来就像列表。DataFrame
我的答案假设您想要的是一个2D numpy数组,而不是元组的numpy数组。@juanpa.arrivillaga ahahahahahahahahahaha是的。我最后一次重新启动是在提示符读取2k某物时。“行吗?”皮尔斯夸德似乎很熟悉哈哈,我想你知道我是从哪里买的。
In [785]: df.points = df.points.apply(np.array); df
Out[785]: 
   id        points
0   1   [-2.3, 7.0]
1   1       [-5, 7]
2   1   [-6.9, 5.0]
3   2    [2.0, 5.9]
4   2  [-0.3, -8.0]

In [787]: df.groupby('id').points.apply(np.asarray)
Out[787]: 
id
1    [[-2.3, 7.0], [-5, 7], [-6.9, 5.0]]
2             [[2.0, 5.9], [-0.3, -8.0]]
In [796]: df.groupby('id').points.apply(lambda x: np.array(list(map(list, x))))
Out[796]: 
id
1    [[-2.3, 7.0], [-5.0, 7.0], [-6.9, 5.0]]
2                 [[2.0, 5.9], [-0.3, -8.0]]