은 동일한 행을 갖지만 다른 순서로 두 개의 numpy ndarrays입니다. 함수 g1을 행으로 적용하면 동일한 결과가 다른 순서로 반환 될 것으로 예상됩니다. 그러나 이것은 사실이 아닙니다.numpy apply_along_axis가 작동하지 않는 이유
g1(x):
return max(0, (x[0] - 1)**2 + (x[1] - 1)**2 - 1.05**2)
Case1:
sol1 = np.array(
[
[0, 0],
[1, 1],
[0, 1],
[1, 0],
[0.2, 0.7],
[0.5, 0.5],
[0.75, 0],
[0.25, 0.8],
[0.5, 0.6],
[0.2, 0.7],
]
)
v = numpy.apply_along_axis(g1, 1, sol1)
This produce: [ 0.8975, 0., 0., 0., 0., 0., 0., 0., 0., 0.] as expected.
Case2:
# The same array with rows shuffled.
sols = numpy.array(
[
[0, 1],
[0.2, 0.7],
[0.5, 0.5],
[0.75, 0],
[0.2, 0.7],
[1, 0],
[0.25, 0.8],
[0.5, 0.6],
[0, 0],
[1, 1],
]
)
v = numpy.apply_along_axis(g1, 1, sols)
This produces: [ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.] which is wrong.
Should be: [ 0., 0., 0., 0., 0., 0., 0., 0., 0.8975, 0.]
내 시스템입니다 : NumPy와 : 1.13.1 : 파이썬 : 3.6.2 : Win10 프로 : CONDA : 당신의 계산을 재 작성 4.3.27
감사
즉, '(0.0, ...) 최대를'모든 경우의 float를 반환보십시오. – hpaulj
두 경우 모두 효과가있었습니다. 대단히 감사합니다. 난 그저 모든 차이를 만든 이유를 이해하려고 애를 쓰고있다. – Christie