내가 먼저가, NumPy와에, poly1d
객체의 배열을 만들 수 있다는 사실이 밖으로 시작하고 싶습니다 개체 우리는 심지어 np.dot
를 사용하여이 양식에서 만든 행렬을 곱할 수 :NumPy와 문제
a2 = random_poly_array((3,3))
a1_x_a2 = np.dot(a1, a2)
그러나, 대부분의 다른 방법이 작동하지 못한다. 예를 들어, 특정 poly1d
개체의 목록을 할 수 없으며 배열로 변환 :와
np.array([np.poly1d([1,2,3]), np.poly1d([1,2,3])])
는 ValueError: cannot copy sequence with size 2 to array axis with dimension 3
을 올릴 것이다.
np.array([np.poly1d([1,2]), np.poly1d([1,2])])
는 오류가 발생하지 않습니다, 혼란에 추가 할 수 있지만 대신 2의의
2x2
배열을 만들려면.
dtype=object
을 추가해도 영향을 미치지 않으며
numpy
은 여전히
poly1d
개 개체를 배열로 변환하려고 시도합니다.
이것이 문제가되는 이유는, 하나의 차원 D 의 배열을 취하고 측정 D-1의poly1d
오브젝트의 배열로 변환 할 수 있다는 것이다. 나는 poly1d
객체의 배열을 반환하려면
arr = np.arange(1, 10).reshape(3,3)
np.apply_along_axis(np.poly1d, 0, arr)
을 기대했을 것이다, 대신 그것은 unalterated 배열을 반환합니다. 첫 번째
poly1d
개체는 0 계수 때문에 3 대신 길이가 2가되므로 더 나쁜 경우
arr=np.arange(9).reshape(3,3)
인 경우 오류가 발생합니다. 따라서, 제 질문은 이것입니다 : numpy에서
poly1d
배열을 만들 수있는 가능한 방법은 무엇입니까? 그렇지 않다면 왜 안 되겠습니까?
def array_to_poly(arr):
return np.apply_along_axis(lambda poly: [None, np.poly1d(poly)], -1, arr)[..., 1]
: 배열로 객체를 방송하지 numpy
강제 None
의 개념을 사용
np.array ([없음, np.poly1d ([1,2]), np.poly1d ([1,2])) [1 :]'할 수 있습니다. 정확하지는 않지만 작동합니다. –
그게 흥미로운 방법이고, 나는 그것을 사용하여 다른 배열에서'poly1d' 배열을 만드는 방법을 알았습니다. 감사합니다. – Sebastian
왜 답을 공유하지 않습니까? –