如何将元组列表转换为 numpy 元组数组?
How convert a list of tupes to a numpy array of tuples?
我有一个这样的列表:
l=[(1,2),(3,4)]
我想将它转换为一个 numpy 数组,并保持数组项类型为元组:
array([(1,2),(3,4)])
但是 numpy.array(l) 会给出:
array([[1,2],[3,4)]])
并且项目类型已从元组更改为 numpy.ndarray,然后我指定了项目类型
numpy.array(l,numpy.dtype('float,float'))
这给出:
array([(1,2),(3,4)])
但项目类型不是元组而是numpy.void,所以问题是:
how to convert it to a numpy.array of tuple,not of numpy.void?
你可以有一个 object
dtype 的数组,让数组的每个元素都是一个元组,就像这样 -
out = np.empty(len(l), dtype=object)
out[:] = l
样本运行-
In [163]: l = [(1,2),(3,4)]
In [164]: out = np.empty(len(l), dtype=object)
In [165]: out[:] = l
In [172]: out
Out[172]: array([(1, 2), (3, 4)], dtype=object)
In [173]: out[0]
Out[173]: (1, 2)
In [174]: type(out[0])
Out[174]: tuple
出于某种原因,如果您正在寻找一行代码,则不能简单地执行此操作(即使 Divakar 的回答最终给您留下 dtype=object
):
np.array([(1,2),(3,4)], dtype=object)
相反,您必须这样做:
np.array([(1,2),(3,4)], dtype="f,f")
"f,f"
向数组发出信号,表明它正在接收两个浮点数的元组(或者您可以使用 "i,i"
表示整数)。如果你愿意,你可以通过在上面一行的末尾添加 .astype(object)
来转换回一个对象。
我有一个这样的列表:
l=[(1,2),(3,4)]
我想将它转换为一个 numpy 数组,并保持数组项类型为元组:
array([(1,2),(3,4)])
但是 numpy.array(l) 会给出:
array([[1,2],[3,4)]])
并且项目类型已从元组更改为 numpy.ndarray,然后我指定了项目类型
numpy.array(l,numpy.dtype('float,float'))
这给出:
array([(1,2),(3,4)])
但项目类型不是元组而是numpy.void,所以问题是:
how to convert it to a numpy.array of tuple,not of numpy.void?
你可以有一个 object
dtype 的数组,让数组的每个元素都是一个元组,就像这样 -
out = np.empty(len(l), dtype=object)
out[:] = l
样本运行-
In [163]: l = [(1,2),(3,4)]
In [164]: out = np.empty(len(l), dtype=object)
In [165]: out[:] = l
In [172]: out
Out[172]: array([(1, 2), (3, 4)], dtype=object)
In [173]: out[0]
Out[173]: (1, 2)
In [174]: type(out[0])
Out[174]: tuple
出于某种原因,如果您正在寻找一行代码,则不能简单地执行此操作(即使 Divakar 的回答最终给您留下 dtype=object
):
np.array([(1,2),(3,4)], dtype=object)
相反,您必须这样做:
np.array([(1,2),(3,4)], dtype="f,f")
"f,f"
向数组发出信号,表明它正在接收两个浮点数的元组(或者您可以使用 "i,i"
表示整数)。如果你愿意,你可以通过在上面一行的末尾添加 .astype(object)
来转换回一个对象。