以下代码在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 ----
错误:
TypeError: int() argument must be a string, a bytes-like object or a number, not 'map'
谢谢。
发布于 2017-06-13 15:41:50
在PY3中,map
就像一个生成器。您需要将其包装在list()
中,以生成np.array
可以使用的列表:例如
np.array(list(map(...)))
发布于 2018-10-04 13:55:06
在python3中,Map返回一个迭代器,而不是一个列表。您还可以尝试使用numpy.fromiter从map obj中获取一个数组,仅用于一维数据。
示例:
a=map(lambda x:x,range(10))
b=np.fromiter(a,dtype=np.int)
b
输出:
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
有关multidimensional arrays
,请参阅Reconcile np.fromiter and multidimensional arrays in Python
https://stackoverflow.com/questions/44511752
复制相似问题