【问题标题】:Convert map object into numpy ndarray in python3在python3中将地图对象转换为numpy ndarray
【发布时间】:2017-06-13 03:11:39
【问题描述】:

以下代码在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'

谢谢。

【问题讨论】:

  • 在 PY3 中,map 就像一个生成器,你需要将它包装在 list() 中以生成一个 np.array 可以使用的列表:例如np.array(list(map(...))).
  • 非常感谢!

标签: python-3.x numpy multidimensional-array


【解决方案1】:

在 python3 中,Map 返回一个迭代器,而不是一个列表。 你也可以尝试numpy.fromiter从地图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

【讨论】:

    【解决方案2】:

    在 PY3 中,map 就像一个生成器。您需要将其包装在 list() 中以生成 np.array 可以使用的列表:例如

     np.array(list(map(...)))
    

    【讨论】:

      猜你喜欢
      • 2020-06-16
      • 1970-01-01
      • 2017-12-14
      • 2015-08-07
      • 1970-01-01
      • 2015-04-15
      • 1970-01-01
      • 2020-01-29
      • 1970-01-01
      相关资源
      最近更新 更多