我正在尝试将np.ndarray
的元素转换为本机整数类型。
>>> x = np.array([1, 2, 2.5])
>>> type(x[0])
<type 'numpy.float64'>
>>> type(x.astype(int)[0])
<type 'numpy.int64'>
我想要的是:
>>> type(x.astype('something here')[0])
<type 'int'>
这是在pandas
上下文中提出的原始问题,但事实证明归结为np.ndarray.astype()
astype(int)
维护Series
中整数的numpy-ness:
>>> s = pd.Series([1,2,3])
>>> type(s[0])
<type 'numpy.int64'>
>>> type(s[0].astype(int))
<type 'numpy.int64'>
反正是否有一个系列,甚至只是一个系列的一个元素作为本机数据类型,以便可以实现以下目标?
>>> type(s[0].dosomething())
<type 'int'>
我正在尝试使用pandas.DataFrame
将networkx.write_gexf()
导出为GEXF格式。
出口商坚持认为,所有使用的数据都会type(x)
,int
,float
或其他一些数据回复bool
。它不知道如何处理numpy.int64
。
答案 0 :(得分:1)
根据评论,可能会发现您不需要这样,但要回答当前的问题,您可以使用item
方法。例如:
In [78]: x = np.array([1.0, 2.0, 3.0])
In [79]: x.dtype
Out[79]: dtype('float64')
In [80]: x.item(0)
Out[80]: 1.0
In [81]: type(x.item(0))
Out[81]: float
In [82]: y = np.array([1, 2, 3], dtype=np.int32)
In [83]: type(y.item(0))
Out[83]: int
In [84]: type(y[0])
Out[84]: numpy.int32
要一次转换整个数组,tolist
方法会将元素转换为最接近的兼容Python类型:
In [95]: xlist = x.tolist()
In [96]: xlist
Out[96]: [1.0, 2.0, 3.0]
In [97]: type(xlist[0])
Out[97]: float
In [98]: ylist = y.tolist()
In [99]: ylist
Out[99]: [1, 2, 3]
In [100]: type(ylist[0])
Out[100]: int