【发布时间】:2011-10-13 00:57:10
【问题描述】:
是否可以在原地映射 NumPy 数组?如果是,如何?
鉴于a_values - 2D 数组 - 这是目前对我有用的代码:
for row in range(len(a_values)):
for col in range(len(a_values[0])):
a_values[row][col] = dim(a_values[row][col])
但它太丑了,我怀疑在 NumPy 中的某个地方一定有一个函数可以对类似的东西做同样的事情:
a_values.map_in_place(dim)
但如果存在上述类似的东西,我一直找不到它。
【问题讨论】:
-
你可以做
a_values = np.vectorize(dim)(a_values)并避免嵌套循环,但这仍然没有到位,所以这不是答案。 -
我不知道有什么函数可以做到这一点,但如果有的话,它只会让代码看起来更整洁。如果你想要 Numpy 特有的性能加速,那么你需要重写 dim() 函数来直接处理 numpy 数组。
-
@eryksun 是的,但它仍然没有到位操作,所以它并没有好多少,并且可能会导致我所说的额外副本
-
我做出了我认为是滥用
vectorize的勇敢尝试,但我现在放弃了。借调鲍勃。 -
@senderle - 不管它值多少钱,你的英勇尝试似乎对我来说是完美的......(而且很漂亮,考虑到所有因素)出于模糊的好奇,它哪里出错了?
标签: python arrays multidimensional-array mapping numpy