복붙노트

[PYTHON] NumPy 배열 전치시키기

PYTHON

NumPy 배열 전치시키기

파이썬과 NumPy를 사용하고 "조바꿈"문제가 있습니다.

a=array([5,4])
print a
print a.T

a.T를 호출하면 배열을 전 환하지 않습니다. a가 예를 들어 [[], []이면 올바르게 바뀌지 만 [..., ..., ...]의 조바꿈이 필요합니다.

해결법

  1. ==============================

    1.그것은 예상대로 정확하게 작동합니다. 1D 배열의 조 변경은 여전히 ​​1D 배열입니다! (만약 당신이 matlab에 익숙하다면, 근본적으로 1D 배열의 개념을 가지고 있지 않습니다 .Matlab의 "1D"배열은 2D입니다.)

    그것은 예상대로 정확하게 작동합니다. 1D 배열의 조 변경은 여전히 ​​1D 배열입니다! (만약 당신이 matlab에 익숙하다면, 근본적으로 1D 배열의 개념을 가지고 있지 않습니다 .Matlab의 "1D"배열은 2D입니다.)

    1D 벡터를 2D 배열로 바꾼 다음 조바꿈 시키려면 np.newaxis (또는 None, 똑같은 것이고 newaxis는 더 읽기 쉽습니다)로 슬라이스하십시오.

    import numpy as np
    a = np.array([5,4])[np.newaxis]
    print(a)
    print(a.T)
    

    일반적으로 말해서, 당신은 이것에 대해 걱정할 필요가 없습니다. 여분의 특성 항목을 추가하는 것은 보통 습관에서 벗어나면 원하는 내용이 아닙니다. Numpy는 다양한 계산을 수행 할 때 1D 배열을 자동으로 브로드 캐스트합니다. 일반적으로 행 벡터와 열 벡터 (둘 다 벡터가 아니며 둘 다 2D입니다!)를 구별 할 필요가 없습니다. 벡터 만 필요할 때입니다.

  2. ==============================

    2.하나가 아닌 두 개의 브래킷 쌍을 사용하십시오. 이렇게하면 한 쌍의 괄호 쌍을 사용하는 경우 만드는 1D 배열과 달리 2 차원 배열이 바뀔 수 있습니다.

    하나가 아닌 두 개의 브래킷 쌍을 사용하십시오. 이렇게하면 한 쌍의 괄호 쌍을 사용하는 경우 만드는 1D 배열과 달리 2 차원 배열이 바뀔 수 있습니다.

    import numpy as np    
    a = np.array([[5, 4]])
    a.T
    

    보다 철저한 예 :

    >>> a = [3,6,9]
    >>> b = np.array(a)
    >>> b.T
    array([3, 6, 9])         #Here it didn't transpose because 'a' is 1 dimensional
    >>> b = np.array([a])
    >>> b.T
    array([[3],              #Here it did transpose because a is 2 dimensional
           [6],
           [9]])
    

    numpy의 모양 메서드를 사용하여 여기에서 진행되는 작업을 확인하십시오.

    >>> b = np.array([10,20,30])
    >>> b.shape
    (3,)
    >>> b = np.array([[10,20,30]])
    >>> b.shape
    (1, 3)
    
  3. ==============================

    3.내가보기에 파티에 조금 늦었지만, 여기 나의 가장 좋아하는 트릭이있다.

    내가보기에 파티에 조금 늦었지만, 여기 나의 가장 좋아하는 트릭이있다.

    a = np.array([1, 2, 3, 4])
    a = a.reshape((-1, 1)) # <--- THIS IS THE TRICK
    
    print a
    array([[1],
           [2],
           [3],
           [4]])
    

    여기 -1이 "필요한만큼의 행"을 의미한다는 것을 이해하면 배열을 "변환"하는 가장 가독성있는 방법이라고 생각합니다.

  4. ==============================

    4.기존 벡터를 대괄호 세트로 묶어서 행렬로 변환 할 수 있습니다 ...

    기존 벡터를 대괄호 세트로 묶어서 행렬로 변환 할 수 있습니다 ...

    from numpy import *
    v=array([5,4]) ## create a numpy vector
    array([v]).T ## transpose a vector into a matrix
    

    numpy에는 또한 행렬 클래스가 있습니다 (배열 대 행렬 참조) ...

    matrix(v).T ## transpose a vector into a matrix
    
  5. ==============================

    5.numpy 1D 배열 -> 열 / 행 행렬 :

    numpy 1D 배열 -> 열 / 행 행렬 :

    >>> a=np.array([1,2,4])
    >>> a[:, None]    # col
    array([[1],
           [2],
           [4]])
    >>> a[None, :]    # row, or faster `a[None]`
    array([[1, 2, 4]])
    

    @ joe-kington이 말했듯이, None을 np.newaxis로 바꿀 수 있습니다.

  6. ==============================

    6.1 차원 배열을 2 차원 열로 '변환'하려면 numpy.vstack을 사용할 수 있습니다.

    1 차원 배열을 2 차원 열로 '변환'하려면 numpy.vstack을 사용할 수 있습니다.

    >>> numpy.vstack(numpy.array([1,2,3]))
    array([[1],
           [2],
           [3]])
    

    바닐라 목록에도 적용됩니다.

    >>> numpy.vstack([1,2,3])
    array([[1],
           [2],
           [3]])
    
  7. ==============================

    7.2D 배열을 조 변경 만 할 수 있습니다. numpy.matrix를 사용하여 2D 배열을 만들 수 있습니다. 3 년이 지났지 만 지금 가능한 솔루션 세트에 추가하고 있습니다.

    2D 배열을 조 변경 만 할 수 있습니다. numpy.matrix를 사용하여 2D 배열을 만들 수 있습니다. 3 년이 지났지 만 지금 가능한 솔루션 세트에 추가하고 있습니다.

    import numpy as np
    m = np.matrix([2, 3])
    m.T
    
  8. ==============================

    8.전치

    전치

    x = [[0 1],
         [2 3]]
    

    ~이다.

    xT = [[0 2],
          [1 3]]
    

    코드는 다음과 같습니다.

    x = array([[0, 1],[2, 3]]);
    np.transpose(x)        
    

    자세한 정보를 보려면 다음 링크를 클릭하십시오.

    http://docs.scipy.org/doc/numpy/reference/generated/numpy.transpose.html

  9. ==============================

    9.위에서 언급 한 의견 중 일부는 1D 배열의 조 변경은 1D 배열이므로 1D 배열을 조 변경하는 한 가지 방법은 배열을 다음과 같은 행렬로 변환하는 것입니다.

    위에서 언급 한 의견 중 일부는 1D 배열의 조 변경은 1D 배열이므로 1D 배열을 조 변경하는 한 가지 방법은 배열을 다음과 같은 행렬로 변환하는 것입니다.

    np.transpose(a.reshape(len(a), 1))
    
  10. ==============================

    10.numpy에있는 함수의 이름은 column_stack입니다.

    numpy에있는 함수의 이름은 column_stack입니다.

    >>>a=np.array([5,4])
    >>>np.column_stack(a)
    array([[5, 4]])
    
  11. ==============================

    11.또 다른 해결책은 ....-)

    또 다른 해결책은 ....-)

    import numpy as np
    
    a = [1,2,4]
    
    b = np.array([a]).T
    
  12. ==============================

    12.대신 arr [:, None]을 사용하여 열 벡터를 만듭니다.

    대신 arr [:, None]을 사용하여 열 벡터를 만듭니다.

  13. ==============================

    13.[5,4]의 조옮김은 [5,4]입니다.

    [5,4]의 조옮김은 [5,4]입니다.

    추신 : 2D 매트릭스를 조 변경하는 간단한 방법이 있습니다.

    zip(*a)
    
  14. from https://stackoverflow.com/questions/5954603/transposing-a-numpy-array by cc-by-sa and MIT license