NumPy 어레이를 다른 NumPy 어레이에 연결합니다.
numpy_array가 있습니다.뭐랄까[ a b c ]
.
그런 다음 다른 NumPy 배열과 연결합니다(목록 작성과 같음).NumPy 어레이를 포함하는 NumPy 어레이를 작성하려면 어떻게 해야 합니까?
나는 아무것도 하지 않고 다음과 같이 하려고 했다.
>>> M = np.array([])
>>> M
array([], dtype=float64)
>>> M.append(a,axis=0)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'numpy.ndarray' object has no attribute 'append'
>>> a
array([1, 2, 3])
In [1]: import numpy as np
In [2]: a = np.array([[1, 2, 3], [4, 5, 6]])
In [3]: b = np.array([[9, 8, 7], [6, 5, 4]])
In [4]: np.concatenate((a, b))
Out[4]:
array([[1, 2, 3],
[4, 5, 6],
[9, 8, 7],
[6, 5, 4]])
또는 다음과 같습니다.
In [1]: a = np.array([1, 2, 3])
In [2]: b = np.array([4, 5, 6])
In [3]: np.vstack((a, b))
Out[3]:
array([[1, 2, 3],
[4, 5, 6]])
에러 메세지는, NumPy 어레이에 모두 표시됩니다.append()
방법.단, 무료 기능이 있습니다.
numpy.append(M, a)
이렇게 하면 변환 대신 새 어레이가 생성됩니다.M
제자리입니다.를 사용하는 것에 주의해 주세요.numpy.append()
에는 양쪽 어레이의 복사가 포함됩니다.고정 크기의 NumPy 어레이를 사용하면 코드 성능이 향상됩니다.
사용할 수 있습니다.numpy.append()
...
import numpy
B = numpy.array([3])
A = numpy.array([1, 2, 2])
B = numpy.append( B , A )
print B
> [3 1 2 2]
이렇게 하면 2개의 어레이가 별도로 생성되지 않고 2개의 어레이가 1차원 어레이에 추가됩니다.
스벤은 모든 것을 말했다, 단지 append가 호출되었을 때 자동 활자 조정 때문에 매우 조심하라.
In [2]: import numpy as np
In [3]: a = np.array([1,2,3])
In [4]: b = np.array([1.,2.,3.])
In [5]: c = np.array(['a','b','c'])
In [6]: np.append(a,b)
Out[6]: array([ 1., 2., 3., 1., 2., 3.])
In [7]: a.dtype
Out[7]: dtype('int64')
In [8]: np.append(a,c)
Out[8]:
array(['1', '2', '3', 'a', 'b', 'c'],
dtype='|S1')
보시는 바와 같이 dtype은 int64에서 float32로, 다음으로 S1로 넘어갑니다.
빈 Numpy 어레이에 어레이 개체를 추가하는 방법에 대해 조금 다른 내용을 찾다가 이 링크를 찾았는데 이 페이지의 모든 솔루션을 시도해 봤지만 소용이 없었습니다.
그러다가 다음과 같은 문답을 찾았습니다.빈 numpy 배열에 새 행을 추가하는 방법
요지는 다음과 같습니다.
원하는 어레이를 "시작"하는 방법은 다음과 같습니다.
arr = np.empty((0,3), int)
그런 다음 연결을 사용하여 다음과 같은 행을 추가할 수 있습니다.
arr = np.concatenate( ( arr, [[x, y, z]] ) , axis=0)
https://docs.scipy.org/doc/numpy/reference/generated/numpy.concatenate.html 도 참조해 주세요.
실제로 Numpy 배열의 일반적인 목록을 만들고 나중에 변환할 수 있습니다.
In [1]: import numpy as np
In [2]: a = np.array([[1,2],[3,4]])
In [3]: b = np.array([[1,2],[3,4]])
In [4]: l = [a]
In [5]: l.append(b)
In [6]: l = np.array(l)
In [7]: l.shape
Out[7]: (2, 2, 2)
In [8]: l
Out[8]:
array([[[1, 2],
[3, 4]],
[[1, 2],
[3, 4]]])
저도 같은 문제가 있어서 @Sven Marnach의 답변에 코멘트를 할 수 없었습니다(어쨌든 Stackoverflow가 처음 시작되었을 때가 생각납니다).
10 X 10 행렬에 난수 목록을 추가합니다.
myNpArray = np.zeros([1, 10])
for x in range(1,11,1):
randomList = [list(np.random.randint(99, size=10))]
myNpArray = np.vstack((myNpArray, randomList))
myNpArray = myNpArray[1:]
np.zeros()를 사용하면 1 x 10의 0으로 배열이 생성됩니다.
array([[0., 0., 0., 0., 0., 0., 0., 0., 0., 0.]])
그런 다음 np.random을 사용하여 10개의 난수 목록이 생성되어 random List에 할당됩니다.루프에 의해 10개의 높이가 쌓입니다.첫 번째 빈 엔트리를 삭제하는 것만 기억하면 됩니다.
myNpArray
array([[31., 10., 19., 78., 95., 58., 3., 47., 30., 56.],
[51., 97., 5., 80., 28., 76., 92., 50., 22., 93.],
[64., 79., 7., 12., 68., 13., 59., 96., 32., 34.],
[44., 22., 46., 56., 73., 42., 62., 4., 62., 83.],
[91., 28., 54., 69., 60., 95., 5., 13., 60., 88.],
[71., 90., 76., 53., 13., 53., 31., 3., 96., 57.],
[33., 87., 81., 7., 53., 46., 5., 8., 20., 71.],
[46., 71., 14., 66., 68., 65., 68., 32., 9., 30.],
[ 1., 35., 96., 92., 72., 52., 88., 86., 94., 88.],
[13., 36., 43., 45., 90., 17., 38., 1., 41., 33.]])
함수는 다음과 같습니다.
def array_matrix(random_range, array_size):
myNpArray = np.zeros([1, array_size])
for x in range(1, array_size + 1, 1):
randomList = [list(np.random.randint(random_range, size=array_size))]
myNpArray = np.vstack((myNpArray, randomList))
return myNpArray[1:]
0 ~ 1000의 난수를 사용한7 x 7 배열
array_matrix(1000, 7)
array([[621., 377., 931., 180., 964., 885., 723.],
[298., 382., 148., 952., 430., 333., 956.],
[398., 596., 732., 422., 656., 348., 470.],
[735., 251., 314., 182., 966., 261., 523.],
[373., 616., 389., 90., 884., 957., 826.],
[587., 963., 66., 154., 111., 529., 945.],
[950., 413., 539., 860., 634., 195., 915.]])
다음 코드를 사용해 보십시오.
import numpy as np
a1 = np.array([])
n = int(input(""))
for i in range(0,n):
a = int(input(""))
a1 = np.append(a, a1)
a = 0
print(a1)
또한 "a" 대신 어레이를 사용할 수 있습니다.
당신의 질문을 이해한다면 한 가지 방법이 있습니다.예를 들어 다음과 같습니다.
a = [4.1, 6.21, 1.0]
여기 암호가 있어요
def array_in_array(scalarlist):
return [(x,) for x in scalarlist]
그 결과 다음과 같은 결과가 됩니다.
In [72]: a = [4.1, 6.21, 1.0]
In [73]: a
Out[73]: [4.1, 6.21, 1.0]
In [74]: def array_in_array(scalarlist):
....: return [(x,) for x in scalarlist]
....:
In [75]: b = array_in_array(a)
In [76]: b
Out[76]: [(4.1,), (6.21,), (1.0,)]
축을 행 방식)는 '행 방식'입니다.np.vstack
★★★★★★★★★★★★★★★★★」np.concatenate
효과가 있을 겁니다.
접속 조작의 상세한 리스트에 대해서는, 공식 문서를 참조해 주세요.
이 제품은 다음 제품과 함께 사용하는numpy's ndarrays
.기능numpy.concatenate()
역시 효과가 있습니다.
>>a = np.random.randint(0,9, size=(10,1,5,4))
>>a.shape
(10, 1, 5, 4)
>>b = np.random.randint(0,9, size=(15,1,5,4))
>>b.shape
(15, 1, 5, 4)
>>X = np.concatenate((a, b))
>>X.shape
(25, 1, 5, 4)
와 거의 같은 방법으로vstack()
>>Y = np.vstack((a,b))
>>Y.shape
(25, 1, 5, 4)
스택의 방향에 따라 어레이를 함께 스택하는 다양한 방법이 있습니다.예를 들어 np.stack()(doc), np.vstack()(doc), np.hstack()(doc) 등을 생각할 수 있습니다.
언급URL : https://stackoverflow.com/questions/9775297/concatenate-a-numpy-array-to-another-numpy-array
'itsource' 카테고리의 다른 글
MYSQL - 경고: #1681 정수 표시 너비는 권장되지 않습니다. (0) | 2022.09.28 |
---|---|
포어치 실행 시 배열 값 변경 (0) | 2022.09.28 |
PHP에서 REST API 호출 (0) | 2022.09.28 |
INT에 십진법 주조 (0) | 2022.09.28 |
C에서 참조로 통과 (0) | 2022.09.28 |