[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.기존 배열에 데이터를 추가하는 것은 파이썬 경험이있는 사람이라면 누구나 할 수있는 자연스러운 일입니다. 그러나 대규모 배열에 규칙적으로 추가하면 NumPy가 파이썬 목록과 같은 방식으로 쉽고 효율적으로 수행하지 못한다는 것을 빨리 알 수 있습니다. "추가"작업을 수행 할 때마다 배열 메모리를 다시 할당하고 메모리 요구 사항을 단기적으로 두 배로 늘려야합니다. 따라서 문제의 일반적인 해결책은 알고리즘의 최종 출력만큼 배열을 할당하는 것입니다. 그런 다음 해당 배열의 하위 집합 (조각)에 대한 모든 작업을 수행하십시오. 어레이 생성 및 제거는 이상적으로 최소화해야합니다.
기존 배열에 데이터를 추가하는 것은 파이썬 경험이있는 사람이라면 누구나 할 수있는 자연스러운 일입니다. 그러나 대규모 배열에 규칙적으로 추가하면 NumPy가 파이썬 목록과 같은 방식으로 쉽고 효율적으로 수행하지 못한다는 것을 빨리 알 수 있습니다. "추가"작업을 수행 할 때마다 배열 메모리를 다시 할당하고 메모리 요구 사항을 단기적으로 두 배로 늘려야합니다. 따라서 문제의 일반적인 해결책은 알고리즘의 최종 출력만큼 배열을 할당하는 것입니다. 그런 다음 해당 배열의 하위 집합 (조각)에 대한 모든 작업을 수행하십시오. 어레이 생성 및 제거는 이상적으로 최소화해야합니다.
즉, 이는 종종 피할 수없는 일이며이를 수행하는 기능은 다음과 같습니다.
2 차원 배열의 경우 :
3D 배열의 경우 (위의 경우 더하기) :
N-D 어레이의 경우 :
-
==============================
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.한 가지 방법은 (최선이 아닐 수도 있습니다) 새로운 요소로 다른 배열을 만들고 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.단일 스칼라를 추가하는 것은 스칼라를 파이썬리스트 유형으로 확장하여 이미 보여준 것처럼 (또한 부동으로 변환하지 않고) 조금 더 쉽게 할 수 있습니다.
단일 스칼라를 추가하는 것은 스칼라를 파이썬리스트 유형으로 확장하여 이미 보여준 것처럼 (또한 부동으로 변환하지 않고) 조금 더 쉽게 할 수 있습니다.
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.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.
target = [] for line in a.tolist(): new_line = line.append(X) target.append(new_line) return array(target)
from https://stackoverflow.com/questions/5064822/how-to-add-items-into-a-numpy-array by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] virtualenv 또는 buildout을 사용하여 PIL을 설치하는 경우의 문제점 (0) | 2018.10.03 |
---|---|
[PYTHON] 파이썬에서 알파벳순으로 유니 코드 문자열을 정렬하려면 어떻게해야합니까? (0) | 2018.10.03 |
[PYTHON] 기본값이 아닌 인수가 기본 인수를 따르지 않는 이유는 무엇입니까? (0) | 2018.10.03 |
[PYTHON] super ()가 오류와 함께 실패합니다. TypeError 부모가 객체에서 상속하지 않는 경우 "인수 1은 classobj가 아닌 유형이어야합니다" (0) | 2018.10.03 |
[PYTHON] Url은 UTF-8을 파이썬에서 디코딩합니다. (0) | 2018.10.03 |