programing

numpy에서 배열에 단일 요소 추가

oldcodes 2023. 7. 3. 23:10
반응형

numpy에서 배열에 단일 요소 추가

다음을 포함하는 numpy 배열을 가지고 있습니다.

[1, 2, 3]

다음을 포함하는 배열을 만들고자 합니다.

[1, 2, 3, 1]

즉, 배열 끝에 첫 번째 요소를 추가합니다.

저는 당연한 것을 시도했습니다.

np.concatenate((a, a[0]))

하지만 다음과 같은 오류가 발생합니다.ValueError: arrays must have same number of dimensions

이해할 수 없습니다. 어레이는 둘 다 1D 어레이에 불과합니다.

append()요소가 추가된 이전 배열일 수 있는 새 배열을 만듭니다.

요소를 추가하기 위해 적절한 방법을 사용하는 것이 더 일반적이라고 생각합니다.

a = numpy.append(a, a[0])

때때로 한 번 또는 한 번만 추가할 때, 사용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)

사용해 보십시오.

np.concatenate((a, np.array([a[0]])))

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

concontate는 두 요소 모두 numpy 배열이어야 하지만 [0]은 배열이 아닙니다.그것이 작동하지 않는 이유입니다.

이 명령은,

numpy.append(a, a[0])

변경되지 않음a배열입니다. 그러나 수정된 새 배열을 반환합니다.그래서 만약에a수정이 필요한 경우 다음을 사용해야 합니다.

a = numpy.append(a, a[0])

a[0]배열이 아닙니다. 그것은 첫 번째 요소입니다.a따라서 차원이 없습니다.

사용해 보십시오.a[0:1]대신에, 그것은 첫 번째 요소를 반환할 것입니다.a단일 항목 배열 내에 있습니다.

t = np.array([2, 3])
t = np.append(t, [4])

요소를 추가하려면 다음을 사용합니다.append()

a = numpy.append(a, 1)이 경우 배열 끝에 1을 추가합니다.

요소를 삽입하려는 경우insert()

a = numpy.insert(a, index, 1)이 경우 인덱스를 사용하여 배열의 위치를 설정하여 원하는 위치에 1을 배치할 수 있습니다.

이건 좀 지나칠 수도 있지만, 난 항상 그것을 사용합니다.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])

예를 들어a=[1,2,3]그리고 당신은 그것이 되기를 원합니다.[1,2,3,1].

내장된 추가 기능을 사용할 수 있습니다.

np.append(a,1)

여기서 1은 int이며, 문자열일 수 있으며 배열의 요소에 속하거나 속하지 않을 수 있습니다.인쇄:[1,2,3,1]

언급URL : https://stackoverflow.com/questions/7332841/add-single-element-to-array-in-numpy

반응형