在python3中将地图对象转换为numpy ndarray

Chr*_*Joo 0 numpy multidimensional-array python-3.x

下面的代码在python2中运行良好,但是迁移到python3后就不行了。如何在python3中更改此代码?

for i, idx in enumerate(indices):
    user_id, item_id = idx 
    feature_seq = np.array(map(lambda x: user_id, item_id))  
    X[i, :len(item_id), :] = feature_seq  # ---- error here ---- 
Run Code Online (Sandbox Code Playgroud)

错误:

TypeError: int() argument must be a string, a bytes-like object or a number, not 'map'
Run Code Online (Sandbox Code Playgroud)

谢谢你。

Jay*_*Jay 5

在 python3 中,Map 返回一个迭代器,而不是一个列表。您还可以尝试numpy.fromiter从地图 obj 中获取数组?仅用于一维数据。

例子:

a=map(lambda x:x,range(10))
b=np.fromiter(a,dtype=np.int)
b
Run Code Online (Sandbox Code Playgroud)

输出:

array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
Run Code Online (Sandbox Code Playgroud)

对于multidimensional arrays,请参阅在 Python 中协调 np.fromiter 和多维数组