是否有简单的方法将通用转换应用于numpy数组?
像示例这样的换位
def T(x,y):
return (y, x) # just an example
ar = np.array([
[1, 2, 3, 4],
[1, 2, 3, 4],
[1, 2, 3, 4],
[1, 2, 3, 4],
])
ar.transform(T)
ar == np.array([
[1, 1, 1, 1],
[2, 2, 2, 2],
[3, 3, 3, 3],
[4, 4, 4, 4],
])
答案 0 :(得分:0)
scipy.ndimage.geometric_transform
是您所需要的
def T(p):
return (p[1], p[0]) # just an example
ar = numpy.array([
[1, 2, 3, 4],
[1, 2, 3, 4],
[1, 2, 3, 4],
[1, 2, 3, 4],
])
ar = scipy.ndimage.geometric_transform(ar,T)
ar == numpy.array([
[1, 1, 1, 1],
[2, 2, 2, 2],
[3, 3, 3, 3],
[4, 4, 4, 4]
])
答案 1 :(得分:-2)
您正在添加不必要的额外步骤。您只需使用数组T
来调用函数T(ar)
。没有数组方法可以调用整个数组,因为您只是将数组作为参数传递给另一个函数。
如果要执行常规的 element-wise 功能,请参见:https://docs.scipy.org/doc/numpy-1.10.1/reference/generated/numpy.vectorize.html