[python] np.linspace(), tf.linspace() 1차원 배열 생성 함수 정리

jaylnne·2022년 5월 6일
0

Python

목록 보기
6/6

❓ np.linspace(), tf.linspace()

  • 보다시피 전자는 numpy 의 함수, 후자는 tensorflow 의 함수이다.
  • linspace 는 Linear Space(선형 공간)의 줄임말 같다.
  • 모든 함수가 그렇듯 이름에서 그 기능이 유추된다. 😌

✅ 기능

  • 두 개 함수 모두 1차원 배열을 생성한다.
  • 아래와 같이 start, stop, num 파라미터를 입력 받는다.
    • start: 1차원 배열이 시작하는 수
    • stop: 1차원 배열이 끝나는 수 (endpoint 설정 여부에 따라 배열에 포함되기도, 포함되지 않기도 한다.)
    • num: 배열의 길이
    • 지원하는 파라미터가 더 있지만 두 함수에 차이가 있다. 자세한 내용은 공식 문서를 참고하자.
import numpy as np

np.linspace(0.01, 0.99, 10)

# output
array([0.01      , 0.11888889, 0.22777778, 0.33666667, 0.44555556,
       0.55444444, 0.66333333, 0.77222222, 0.88111111, 0.99      ])
import tensorflow as tf

tf.linspace(0.01, 0.99, 10)

# output
<tf.Tensor: shape=(10,), dtype=float32, numpy=
array([0.01      , 0.11888889, 0.2277778 , 0.33666667, 0.44555557,
       0.55444443, 0.66333336, 0.7722223 , 0.88111115, 0.99      ],
      dtype=float32)>

😎 Tip !

  • 확률로 이루어진 1차원 배열을 생성하고 싶을 때 start 와 stop 을 0과 1로 하지 않는 것을 추천한다.
  • 이후 과정에서 Division Zero 에러가 발생할 수 있기 때문이다. 
    • 0 은 그렇다쳐도, 1은 왜? 라는 생각이 들 수 있다.
    • 생각해보자. 발생할 확률이 1인 사건이 발생하지 않을 확률은 0 이다. (1-p)
    • 따라서 1도 Division Zero 에러를 발생시킬 여지가 있다.
  • 위에서도 언급했지만, np.linspace() 에서는 endpoint 파라미터를 False로 두면 stop 파라미터는 배열에 포함하지 않는다.
import numpy as np

np.linspace(0.01, 1, 10, endpoint=False)

# output
array([0.01 , 0.109, 0.208, 0.307, 0.406, 0.505, 0.604, 0.703, 0.802,
       0.901])
  • 이러한 경우엔 stop 을 1로 설정하더라도 Division Zero 에러 걱정을 하지 않아도 된다.
    • 하지만... 굳이? 라는 생각이 든다. 🤨
    • endpoint 의 디폴트는 True 이다.
    • 그걸 굳이 False 로 변경하기보다, 그냥 stop 을 1보다 살짝 작은 수로 설정하는 게 편리한 것 같다.
    • 물론 경우에 따라 필요하다고 생각되면 사용하면 된다.
profile
스스로 정한 목표에 도달하기 위해 달리는 걸 즐기는 사람 🏃‍♀️

0개의 댓글