플랫텐과 ravel
어제의 기사는 이마이치이므로 더 분해해, 이해를 깊게 하고 싶습니다.
오늘은 flatten 함수와 ravel 함수의 차이입니다.
어느 쪽도 배열을 일원화하기 위한 함수입니다.
기본적으로는 flatten 함수를 사용하는 것 같습니다만, ravel 함수가 처리가 빠른 경우도 있는 것 같습니다.
그럼, 각각 봅시다.
flatten 정보
우선 t에 flatten API
numpy.ndarray.flatten(order = ‘C’)
파라미터로서 order를 가지지만, 이번의 내용에는 그다지 관계가 없기 때문에 자세한 것은 덮을 수 있습니다.
만약, 걱정되는 사람은 flatten 를 봐 주세요.
예문을 보자.
import numpy as np
a = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
a = np.reshape((2, 5))
b[4] = 251
b = a.flatten()
print('a : ', a)
print('b : ', b)
a : [[ 1 2 3 4 5]
[ 6 7 8 9 10]]
b : [ 1 2 3 4 251 6 7 8 9 10]
표시하기 전에 b의 index=5 곳에 251이라는 소수를 넣어도 원래의 "a"는 변하지 않습니다.
왜 소수인가? 아름답기 때문에. 웃음
이야기를 되돌리면, a.flatten()의 곳에서 "a"는 카피되어 b에 건네지고 있는 것이군요.
그렇다면 ravel은 어떻습니까?
ravel 정보
처음에 ravel의 API
numpy.ravel(a, order=’C’)
또는,
numpy.ndarray.ravel(order=’C’)
우선 첫 번째 차이로 ravel의 경우는 1차원 배열로 하고 싶은 배열을 파라미터로서 가질 수 있습니다.
또 다른 차이가 있습니다.
일단 다음 코드를 살펴 보겠습니다.
샘플 코드
import numpy as np
a = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]).reshape((2, 5))
# b = np.ravel(a)とも書ける。
b = a.ravel()
b[4] = 251
print('a : ', a, end='\n\n')
print('b : ', b)
a : [[ 1 2 3 4 251]
[ 6 7 8 9 10]]
b : [ 1 2 3 4 251 6 7 8 9 10]
무려! ! ! !
차이가 명확해졌어요.
ravel의 경우는 b에 a의 참조를 건네주고 있는 것이군요.
결국 차이는?
flatten() : 복사본을 전달합니다.
ravel() : 참조를 전달합니다. 그리고 쓰는 방법이 두 가지 있다.
어느 것이 좋습니까?
그것은 시간과 경우에 따라 다릅니다.
빠른 분은 ravel
하지만 1차원 배열로 바꾸기 전의 데이터도 사용하고 싶다면 flatten이라는 곳이지요.
어느 쪽도 알아 두면 처리가 몇 배나 빨라질지도 모릅니다.
고마워요!
참고문헌
flatten1
flatten2
ravel
Reference
이 문제에 관하여(플랫텐과 ravel), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/mitsumizo/items/02cb82c06e3d42f5011e
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
import numpy as np
a = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
a = np.reshape((2, 5))
b[4] = 251
b = a.flatten()
print('a : ', a)
print('b : ', b)
a : [[ 1 2 3 4 5]
[ 6 7 8 9 10]]
b : [ 1 2 3 4 251 6 7 8 9 10]
처음에 ravel의 API
numpy.ravel(a, order=’C’)
또는,
numpy.ndarray.ravel(order=’C’)
우선 첫 번째 차이로 ravel의 경우는 1차원 배열로 하고 싶은 배열을 파라미터로서 가질 수 있습니다.
또 다른 차이가 있습니다.
일단 다음 코드를 살펴 보겠습니다.
샘플 코드
import numpy as np
a = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]).reshape((2, 5))
# b = np.ravel(a)とも書ける。
b = a.ravel()
b[4] = 251
print('a : ', a, end='\n\n')
print('b : ', b)
a : [[ 1 2 3 4 251]
[ 6 7 8 9 10]]
b : [ 1 2 3 4 251 6 7 8 9 10]
무려! ! ! !
차이가 명확해졌어요.
ravel의 경우는 b에 a의 참조를 건네주고 있는 것이군요.
결국 차이는?
flatten() : 복사본을 전달합니다.
ravel() : 참조를 전달합니다. 그리고 쓰는 방법이 두 가지 있다.
어느 것이 좋습니까?
그것은 시간과 경우에 따라 다릅니다.
빠른 분은 ravel
하지만 1차원 배열로 바꾸기 전의 데이터도 사용하고 싶다면 flatten이라는 곳이지요.
어느 쪽도 알아 두면 처리가 몇 배나 빨라질지도 모릅니다.
고마워요!
참고문헌
flatten1
flatten2
ravel
Reference
이 문제에 관하여(플랫텐과 ravel), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/mitsumizo/items/02cb82c06e3d42f5011e
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
import numpy as np
a = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]).reshape((2, 5))
# b = np.ravel(a)とも書ける。
b = a.ravel()
b[4] = 251
print('a : ', a, end='\n\n')
print('b : ', b)
a : [[ 1 2 3 4 251]
[ 6 7 8 9 10]]
b : [ 1 2 3 4 251 6 7 8 9 10]
flatten() : 복사본을 전달합니다.
ravel() : 참조를 전달합니다. 그리고 쓰는 방법이 두 가지 있다.
어느 것이 좋습니까?
그것은 시간과 경우에 따라 다릅니다.
빠른 분은 ravel
하지만 1차원 배열로 바꾸기 전의 데이터도 사용하고 싶다면 flatten이라는 곳이지요.
어느 쪽도 알아 두면 처리가 몇 배나 빨라질지도 모릅니다.
고마워요!
참고문헌
flatten1
flatten2
ravel
Reference
이 문제에 관하여(플랫텐과 ravel), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/mitsumizo/items/02cb82c06e3d42f5011e
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
flatten1
flatten2
ravel
Reference
이 문제에 관하여(플랫텐과 ravel), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/mitsumizo/items/02cb82c06e3d42f5011e텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)