转自Stackoverflow。备忘用。

In Python 2 I could do the following:

import numpy as np    
f = lambda x: x**2
seq = map(f, xrange(5))
seq = np.array(seq)
print seq
# prints: [ 0  1  4  9 16]

In Python 3 it does not work anymore:

import numpy as np    
f = lambda x: x**2
seq = map(f, range(5))
seq = np.array(seq)
print(seq)
# prints: <map object at 0x10341e310>

How do I get the old behaviour (converting the map results to numpy array)?

Answer

Use np.fromiter:

import numpy as np    
f = lambda x: x**2
seq = map(f, range(5))
np.fromiter(seq, dtype=np.int)
# gets array([ 0,  1,  4,  9, 16])

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-02-13
  • 2022-01-16
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-02-10
  • 2022-12-23
  • 2021-12-20
  • 2022-12-23
  • 2022-02-26
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案