在python
脚本中,用对象填充2个numpy
数组,我们称它们为inA
和inB
(相同的shape
)。这些对象都是相同的类型,并且有一个方法calculate()
和一个属性size
。你知道吗
我想将该方法应用于每个元素,并将结果保存在新数组中,我还想从每个元素获取属性,并将结果保存在新数组中。
注意:我已经找到了实现所有这些的方法,但我认为它们可以改进。我只是不知道怎么做。
如果该方法不带参数或非数组参数,我找到了一种方法将其应用于每个元素,如下所示:
f = lambda x: x.calculate()
outA = np.vectorize(f)(inA)
获得财产也是如此:
f = lambda x: x.size
outA = np.vectorize(f)(inA)
这是可行的,但是很难看(imho),而且IDE不知道lambda函数中的x
这一事实使得我不得不“盲目地”编写函数,而没有intellisense的帮助(或者它的Spyder等价物)。你知道吗
如果该方法将另一个对象作为其参数,并且我想将其应用于inA
中的每个元素,并使用inB
中相应的元素作为其参数,那么我唯一能想到的就是一个可怕的循环:
out = np.ndarray(inA.shape)
for index, iA in np.ndenumerate(inA):
out[index] = iA.calculate(inB[index])
我拒绝相信没有更好的方法来实现这一点。你知道吗
因此我的问题是:有没有办法改进这两种方法(没有双关语)将一种方法应用于数组中的元素或元素对?
对于应用一种方法,我发现我能做到
对于paiwise方法的应用,我发现我可以
因为方法的第一个参数是
self
。你知道吗尤其是对于后者,这是很多清洁。你知道吗
我还没有找到一种没有
lambda
函数的方法,我猜是最简单/最好的一种方式。你知道吗
相关问题 更多 >
编程相关推荐