<질문>
다음을 포함하는 numpy 배열이 있습니다.
[1, 2, 3]
다음을 포함하는 배열을 만들고 싶습니다.
[1, 2, 3, 1]
즉, 배열의 끝에 첫 번째 요소를 추가하고 싶습니다.
나는 명백한 것을 시도했습니다.
np.concatenate((a, a[0]))
하지만 다음과 같은 오류가 발생합니다.ValueError: arrays must have same number of dimensions
나는 이것을 이해하지 못한다. 배열은 둘 다 1차원 배열일 뿐이다.
<답변1>
append()
요소가 추가된 이전 배열이 될 수 있는 새 배열을 만듭니다.
요소를 추가하는 데 적절한 방법을 사용하는 것이 더 정상적이라고 생각합니다.
a = numpy.append(a, a[0])
<답변2>
때때로 한 번 또는 한 번만 추가할 때 사용np.append
귀하의 어레이에서 괜찮을 것입니다. 이 접근 방식의 단점은 호출될 때마다 완전히 새로운 배열에 메모리가 할당된다는 것입니다. 상당한 양의 샘플에 대해 배열을 늘릴 때 배열을 미리 할당하거나(총 크기를 알고 있는 경우) 목록에 추가하고 나중에 배열로 변환하는 것이 좋습니다.
사용np.append
:
b = np.array([0])
for k in range(int(10e4)):
b = np.append(b, k)
1.2 s ± 16.1 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
나중에 배열로 변환하는 파이썬 목록 사용:
d = [0]
for k in range(int(10e4)):
d.append(k)
f = np.array(d)
13.5 ms ± 277 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
numpy 배열 사전 할당:
e = np.zeros((n,))
for k in range(n):
e[k] = k
9.92 ms ± 752 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
최종 크기를 알 수 없는 경우 사전 할당이 어려워 50개 단위로 사전 할당을 시도했지만 목록 사용에 근접하지 않았습니다.
85.1 ms ± 561 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)
<답변3>
이 시도:
np.concatenate((a, np.array([a[0]])))
http://docs.scipy.org/doc/numpy/reference/generated/numpy.concatenate.html
연결은 두 요소가 모두 numpy 배열이어야 합니다. 그러나 [0]은 배열이 아닙니다. 그렇기 때문에 작동하지 않습니다.
<답변4>
a[0]
배열이 아니라 첫 번째 요소입니다.a
따라서 차원이 없습니다.
사용해보십시오a[0:1]
대신 첫 번째 요소를 반환합니다.a
단일 항목 배열 내부.
<답변5>
이 명령은,
numpy.append(a, a[0])
변경하지 않습니다a
정렬. 그러나 수정된 새 배열을 반환합니다. 그래서 만약a
수정이 필요한 경우 다음을 사용해야 합니다.
a = numpy.append(a, a[0])
<답변6>
t = np.array([2, 3])
t = np.append(t, [4])
<답변7>
요소를 추가하려면 다음을 사용하십시오.append()
a = numpy.append(a, 1)
이 경우 배열 끝에 1을 추가합니다.
요소를 삽입하려면 다음을 사용하십시오.insert()
a = numpy.insert(a, index, 1)
이 경우 인덱스를 사용하여 배열의 위치를 설정하고 원하는 위치에 1을 넣을 수 있습니다.
<답변8>
이것은 약간 과잉 일 수 있지만 항상 사용합니다.np.take
모든 랩어라운드 인덱싱을 위한 함수:
>>> a = np.array([1, 2, 3])
>>> np.take(a, range(0, len(a)+1), mode='wrap')
array([1, 2, 3, 1])
>>> np.take(a, range(-1, len(a)+1), mode='wrap')
array([3, 1, 2, 3, 1])
<답변9>
의 말을하자a=[1,2,3]
그리고 당신은 그것을 원합니다[1,2,3,1]
.
내장된 추가 기능을 사용할 수 있습니다.
np.append(a,1)
여기서 1은 정수이고 문자열일 수 있으며 배열의 요소에 속하거나 속하지 않을 수 있습니다. 인쇄물:[1,2,3,1]
'개발 > Python' 카테고리의 다른 글
[파이썬] subprocess.Popen과 os.system의 차이점 (0) | 2022.10.23 |
---|---|
[파이썬] 모듈의 별칭을 정의할 수 있습니까? (0) | 2022.10.23 |
[파이썬] simple HTTP server에서 액세스 제어 활성화 (0) | 2022.10.22 |
[파이썬] SQLAlchemy - cascade 삭제 (0) | 2022.10.22 |