我有一个这样的列表:
l=[(1,2),(3,4)]
我想把它转换成一个numpy数组,并保持数组项类型为tuple:
array([(1,2),(3,4)])
但是numpy.array(l)会给予:
array([[1,2],[3,4)]])
并且项目类型已经从tuple更改为numpy.ndarray,那么我指定了项目类型
numpy.array(l,numpy.dtype('float,float'))
这给出:
array([(1,2),(3,4)])
但是item类型不是tuple而是numpy.void,所以问题是:
how to convert it to a numpy.array of tuple,not of numpy.void?
3条答案
按热度按时间46scxncf1#
你可以有一个
object
dtype的数组,让数组的每个元素都是一个元组,就像这样-样品运行-
nqwrtyyt2#
出于某种原因,如果您正在寻找一行代码,则不能简单地这样做(即使Divakar的答案最终留给您
dtype=object
):相反,你必须这样做:
"f,f"
向数组发出信号,表明它正在接收两个浮点数的元组(或者您可以使用"i,i"
来处理整数)。如果你愿意,你可以通过将.astype(object)
添加到上一行的末尾来强制转换回一个对象)。xn1cxnb43#
刚刚发现Pandas有办法解决这个问题。您可以使用它们的
MultiIndex
类来创建元组数组,因为所有pandas Indexes都是 Package 的1-D numpy数组。这就像在元组列表上调用Index
构造函数一样简单。