【发布时间】:2013-06-11 23:31:33
【问题描述】:
我想将numpy.array 从 NxM 映射到 NxMx3,其中三个元素的向量是原始条目的函数:
lambda x: [f1(x), f2(x), f3(x)]
但是,numpy.vectorize 之类的内容不允许更改尺寸。
当然,我可以创建一个零数组并创建一个循环 (and it is what I am doing by now),但这听起来既不是 Pythonic 也不是高效的(就像 Python 中的每个循环一样)。
有没有更好的方法来对 numpy.array 执行元素操作,为每个条目生成一个向量?
【问题讨论】:
-
如果
N和M明显大于 3,则在第三维上的循环对性能的影响微乎其微。使用 for 循环没有什么不符合 Python 的!使用np.vectorize不是非常 numpythonic 或高效的。您可以尝试将f1、f2和f3转换为一个接受数组并返回数组的函数。如果不知道您的函数在做什么,就不可能知道这种方法是否适合您的问题。 -
@Jaime 我正在循环 N 和 M,而不是 3。问题是在三个浮点数 [R,G,B] 中转换复数,所以我可以绘制一个复杂函数(请参阅链接在问题中)。