>

나는 ndarray dtype 값의 numpy.complex128 . 이 값을 사용하여 Spark DF를 만들려고하면 오류가 발생합니다.

UserWarning: createDataFrame attempted Arrow optimization because 'spark.sql.execution.arrow.enabled' is set to true; however, failed by the reason below:
Unsupported numpy type 15
Attempting non-optimization as 'spark.sql.execution.arrow.fallback.enabled' is set to true.
TypeError: not supported type: <class 'complex'>

이런 상황에 처한 사람이 있습니까? 이 복잡한 숫자를 어떻게 표현할 수 있습니까? 궁극적으로 그 숫자를 다시 검색해야한다는 것을 명심하십시오.

  • 답변 # 1

    복소수는 단지 수레 쌍입니다. 너프 한 모양의 배열이있는 경우 (n1, n2, ..., nZ) 그리고 유형 complex128 , 당신은 할 수 있습니다 view 모양의 배열로 (n1, n2, ..., 2 * nZ) 그리고 유형 float64 :

    >>> a = np.linspace(0.+1.j, 1.+0j, 12).reshape(3, 4)
    >>> a.shape
    (3, 4)
    >>> a.dtype
    dtype('complex128')
    >>> b = a.view(np.float64)
    >>> b.shape
    (3, 8)
    >>> b.dtype
    np.float64
    
    

    실수 부와 허수 부는 배열의 다른 모든 요소를 ​​차지합니다. 데이터가 호환 가능한 dtype으로 표시되는 것을 변경하지 않았는지 확인할 수 있습니다.

    >>> (b[:, ::2] == a.real).all()
    True
    >>> (b[:, 1::2] == a.imag).all()
    True
    
    

    작업이 매우 저렴합니다. 보폭이 다른 새 배열 객체가 동일한 데이터에 만들어집니다. 직렬화를 해제하면 모양 배열을 간단하게 복원 할 수 있습니다 (n1, n2, ..., 2 * nZ) 그리고 유형 float64 모양 중 하나로 (n1, n2, ..., nZ) 그리고 유형 complex128 :

    >>> a2 = b.view(np.complex128)
    >>> a2.shape
    (3, 4)
    >>> a2.dtype
    dtype('complex128')
    
    

  • 이전 bufferedimage - 올바른 크기로 버퍼링 된 이미지를 내 보내지 않는 Java 코드
  • 다음 python csv.writer - 파이썬 - csvwriter :출력에서 숫자 사이의 쉼표