我正在尝试创建一个类型为long
的numpy数组(即Python的long
,而不是numpy的long = int64
)。
如果我这样做:
m = np.eye(6, dtype=long)
print(m.dtype)
这输出int64
;即,它们不是Python long
s。
有没有办法创建一个numpy数组,每个元素的类型为long
?或者这是numpy不支持的固定宽度与非固定宽度问题?如果是这样,是否有任何库(最好有一个很好的C API,如numpy的)可以做到这一点?
答案 0 :(得分:7)
Python的长整数类型不是本机numpy类型,所以你必须这样做
使用object
数据类型。具有object
类型的numpy数组的元素可以是任何python对象。
例如,
In [1]: x = np.array([1L, 2L, 3L], dtype=object)
In [2]: x
Out[2]: array([1L, 2L, 3L], dtype=object)
In [3]: x[0]
Out[3]: 1L
In [4]: type(x[0])
Out[4]: long
这是否对你有用取决于你想对长阵列做什么。