복붙노트

[PYTHON] 수위가 낮은 배열에 항목을 추가하는 방법

PYTHON

수위가 낮은 배열에 항목을 추가하는 방법

다음 작업을 수행해야합니다.

에서:

a = array([[1,3,4],[1,2,3]...[1,2,1]])

(각 행에 하나의 요소 추가)

a = array([[1,3,4,x],[1,2,3,x]...[1,2,1,x]])

나는 [n] = array ([1,3,4, x])와 같은 것들을 시도했다.

그러나 numpy는 모양 불일치에 대해 불평했다. 반복을 시도하고 요소 x를 각 항목에 추가했지만 변경 내용이 반영되지 않았습니다.

내가 이것을 어떻게 성취 할 수 있을지에 대한 아이디어가 있습니까?

해결법

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

    1.기존 배열에 데이터를 추가하는 것은 파이썬 경험이있는 사람이라면 누구나 할 수있는 자연스러운 일입니다. 그러나 대규모 배열에 규칙적으로 추가하면 NumPy가 파이썬 목록과 같은 방식으로 쉽고 효율적으로 수행하지 못한다는 것을 빨리 알 수 있습니다. "추가"작업을 수행 할 때마다 배열 메모리를 다시 할당하고 메모리 요구 사항을 단기적으로 두 배로 늘려야합니다. 따라서 문제의 일반적인 해결책은 알고리즘의 최종 출력만큼 ​​배열을 할당하는 것입니다. 그런 다음 해당 배열의 하위 집합 (조각)에 대한 모든 작업을 수행하십시오. 어레이 생성 및 제거는 이상적으로 최소화해야합니다.

    기존 배열에 데이터를 추가하는 것은 파이썬 경험이있는 사람이라면 누구나 할 수있는 자연스러운 일입니다. 그러나 대규모 배열에 규칙적으로 추가하면 NumPy가 파이썬 목록과 같은 방식으로 쉽고 효율적으로 수행하지 못한다는 것을 빨리 알 수 있습니다. "추가"작업을 수행 할 때마다 배열 메모리를 다시 할당하고 메모리 요구 사항을 단기적으로 두 배로 늘려야합니다. 따라서 문제의 일반적인 해결책은 알고리즘의 최종 출력만큼 ​​배열을 할당하는 것입니다. 그런 다음 해당 배열의 하위 집합 (조각)에 대한 모든 작업을 수행하십시오. 어레이 생성 및 제거는 이상적으로 최소화해야합니다.

    즉, 이는 종종 피할 수없는 일이며이를 수행하는 기능은 다음과 같습니다.

    2 차원 배열의 경우 :

    3D 배열의 경우 (위의 경우 더하기) :

    N-D 어레이의 경우 :

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

    2.

    import numpy as np
    a = np.array([[1,3,4],[1,2,3],[1,2,1]])
    b = np.array([10,20,30])
    c = np.hstack((a, np.atleast_2d(b).T))
    

    c :를 반환합니다.

    array([[ 1,  3,  4, 10],
           [ 1,  2,  3, 20],
           [ 1,  2,  1, 30]])
    
  3. ==============================

    3.한 가지 방법은 (최선이 아닐 수도 있습니다) 새로운 요소로 다른 배열을 만들고 column_stack을 수행하는 것입니다. 즉

    한 가지 방법은 (최선이 아닐 수도 있습니다) 새로운 요소로 다른 배열을 만들고 column_stack을 수행하는 것입니다. 즉

    >>>a = array([[1,3,4],[1,2,3]...[1,2,1]])
    [[1 3 4]
     [1 2 3]
     [1 2 1]]
    
    >>>b = array([1,2,3])
    >>>column_stack((a,b))
    array([[1, 3, 4, 1],
           [1, 2, 3, 2],
           [1, 2, 1, 3]])
    
  4. ==============================

    4.단일 스칼라를 추가하는 것은 스칼라를 파이썬리스트 유형으로 확장하여 이미 보여준 것처럼 (또한 부동으로 변환하지 않고) 조금 더 쉽게 할 수 있습니다.

    단일 스칼라를 추가하는 것은 스칼라를 파이썬리스트 유형으로 확장하여 이미 보여준 것처럼 (또한 부동으로 변환하지 않고) 조금 더 쉽게 할 수 있습니다.

    import numpy as np
    a = np.array([[1,3,4],[1,2,3],[1,2,1]])
    x = 10
    
    b = np.hstack ((a, [[x]] * len (a) ))
    

    b를 다음과 같이 반환합니다.

    array([[ 1,  3,  4, 10],
           [ 1,  2,  3, 10],
           [ 1,  2,  1, 10]])
    

    다음과 같이 행을 추가 할 수 있습니다.

    c = np.vstack ((a, [x] * len (a[0]) ))
    

    c를 다음과 같이 반환합니다.

    array([[ 1,  3,  4],
           [ 1,  2,  3],
           [ 1,  2,  1],
           [10, 10, 10]])
    
  5. ==============================

    5.x가 단 하나의 스칼라 값인 경우 다음과 같이 배열의 올바른 모양을 보장하기 위해 시도 할 수 있습니다.이 배열의 오른쪽 맨 끝에 추가 / 연결됩니다.

    x가 단 하나의 스칼라 값인 경우 다음과 같이 배열의 올바른 모양을 보장하기 위해 시도 할 수 있습니다.이 배열의 오른쪽 맨 끝에 추가 / 연결됩니다.

    import numpy as np
    a = np.array([[1,3,4],[1,2,3],[1,2,1]])
    x = 10
    b = np.hstack((a,x*np.ones((a.shape[0],1))))
    

    b를 다음과 같이 반환합니다.

    array([[  1.,   3.,   4.,  10.],
           [  1.,   2.,   3.,  10.],
           [  1.,   2.,   1.,  10.]])
    
  6. ==============================

    6.

    target = []
    
    for line in a.tolist():
        new_line = line.append(X)
        target.append(new_line)
    
    return array(target)
    
  7. from https://stackoverflow.com/questions/5064822/how-to-add-items-into-a-numpy-array by cc-by-sa and MIT license