앞서 Pandas에 대해 전반적으로 알아보았다.

 

앞으로는 데이터를 다루는 데 있어 자주 사용하는 Pandas.Series의 함수를 정리하도록 하겠다.

 

첫 번째 Series의 함수는 isnull()이다.

 

이 함수는 Series의 데이터 값이 NA여부를 판단하여 데이터가 True or False로 나와있는 bool로 되어있는 Series로 반환한다. 여기에서 NA는 None과 numpy.NaN과 같은 것을 의미한다.

 

import pandas as pd
import numpy as np

a = pd.Series([1,np.NaN,3,4,None],
              index = ['a','b','c','d','e'])

a.isnull()

#결과
a    False
b     True
c    False
d    False
e     True
dtype: bool

 

한 가지 주의해야 할 점은 numpy.inf는 Pandas.isnull()에서 NA값으로 정의하지 않는다

 

a = pd.Series([1,np.NaN,3,4,np.inf],
              index = ['a','b','c','d','e'])
              
a.isnull()

#결과
a    False
b     True
c    False
d    False
e    False
dtype: bool

 

따라서 다음과 같이 Pandas.options.mode.use_inf_as_na를 True로 바꾸어 주어야 한다.

 

pd.options.mode.use_inf_as_na = True

a = pd.Series([1,np.NaN,3,4,np.inf],
              index = ['a','b','c','d','e'])

a.isnull()

#결과
a    False
b     True
c    False
d    False
e     True
dtype: bool

'Python > pandas' 카테고리의 다른 글

1-2. Pandas.Series - index를 이용한 데이터 다루기  (0) 2022.03.12
1-1. Pandas.Series - parameter 설명  (0) 2022.03.10
0. Pandas 소개  (0) 2022.03.09

1-1에서는 pd.Series의 parameter에 대해 설명하였다. 

pandas.Series에 대한 선언과 parameter를 모른다면 다음의 링크에 들어가서 공부하고 온다면 좋다.

https://2vs5.tistory.com/6

 

1-1. Pandas.Series - parameter 설명

Series는 일련의 객체를 담을 수 있는 1차원 배열 같은 자료구조이다. 또한 배열의 데이터와 연관된 이름인 index를 가지고 있다. Pandas의 series의 parameter는 다음과 같다. class pandas.Series(data = None,..

2vs5.tistory.com

 

이번에는 pd.Pandas를 사용할 때 index를 이용하여 데이터를 다루는 방법을 알아보겠다.

 

1. index를 통한 데이터 획득

 

앞서 우리는 다음과 같이 선언한 pd.Series의 index를 통하여 값을 가져 올 수 있는 다양한 방법이 있는 것을 알고 있다.

 

python의 dictionary의 key값처럼 index의 값을 입력하면 데이터를 얻을 수 있다.

 

a = pd.Series([1,2,3,4,5], index = ['a', 'b', 'c', 'd', 'e'])

a['a']

#결과
1

 

array_like형 데이터가 index로 들어가면 관련 데이터로만 이루어진 Series형 데이터를 반환한다.

 

b = np.array(['c', 'a', 'b'])
a[b]

#결과
c    3
a    1
b    2
dtype: int64

 

python의 slicing처럼 index또한 다음과 같이 사용 가능하다.

 

a['a':'c']

#결과
a    1
b    2
c    3
dtype: int64

2. index를 이용한 산술연산

파이썬에서 쓰는 산술 연산자는 pd.Series에서 사용이 가능하다. 다음을 보면 알수 있다.

 

data = [1,2,3,4,5]

a = pd.Series(data, index = ['a', 'b', 'c', 'd', 'e'])

a > 1

#결과
a    False
b     True
c     True
d     True
e     True
dtype: bool

Series형 데이터인 a를 이용하여 a > 1을 사용하면 a에 대한 index를 이용하여 1보다 큰 값에는 True 작은 값에는 False인 bool형 데이터를 갖는 Series형 데이터를 반환한다. Series형 데이터 또한 array_like형 데이터 이므로 index로 들어가는게 가능하다.

 

이를 index값으로 사용하여 새로운 index값으로 입력한다면 우리는 Series형 데이터에서 원하는 데이터만 습득가능하다. 즉 , 원하는 Series 데이터에서 산술 연산자를 통해 원하는 값만을 습득 가능하다.

 

다음의 예시는 a에 들어있는 데이터에서 1보다 큰 값을 얻는 것이다.

 

data = [1,2,3,4,5]

a = pd.Series(data, index = ['a', 'b', 'c', 'd', 'e'])

a[a > 1]

#결과
b    2
c    3
d    4
e    5
dtype: int64

 

위의 방법들을 이용하여 원하는 방식대로 데이터를 추출하는 것이 가능한다.

 

'Python > pandas' 카테고리의 다른 글

1-3. Pandas.Series - Pandas.Series.isnull  (2) 2022.03.12
1-1. Pandas.Series - parameter 설명  (0) 2022.03.10
0. Pandas 소개  (0) 2022.03.09

Series는 일련의 객체를 담을 수 있는 1차원 array_like 자료구조이다. 또한 배열의 데이터와 연관된 이름인 index를 가지고 있다.

 

Pandas의 series의 parameter는 다음과 같다.

class pandas.Series(data = None, index = None, dtype = None, name = None, copy = False, fastpath = False)

Parameter

  • data : array-like, iterable, dict, scalar value
  • index : array-like, index(1d)
  • dtype : str, numpy.dtype, ExtensionDtype, optional
  • name : str, optional
  • copy : bool, default False

위의 data의 정의를 보면 array-like, iterable, dict, scalar value의 데이터 형태가 들어갈 수 있으며 이는 유연하게 데이터를 받을 수 있다는 것이다.

 

array-like는 다음의 링크에 정의되어 있다. 

https://2vs5.tistory.com/5

 

array_like 데이터 타입(data type)

클래스나 함수 선언을 보면 자주 input으로 array_like형 데이터 타입을 요구하는 경우가 많다. 그러나 array_like라고 하면 이해하기 힘든 경우가 많아 한번 정리하려고 한다. Numpy의 공식 홈페이지에

2vs5.tistory.com

 

Data

array-like에서 가장 간단한 list형태로 Series 객체를 생성해 보자

import pandas as pd

a = pd.Series([1,2,3,4,5,6,7,8,9,10])

#결과
0     1
1     2
2     3
3     4
4     5
5     6
6     7
7     8
8     9
9    10
dtype: int64

다음과 같이 결과가 나오는 것을 확인 가능하다.

결과는 리스트의 값이 행으로 들어가며 각 행의 첫 번째 열이 index이다.

 

다음은 iterable 데이터 타입으로 Series를 생성해 보았다.

 

iterable = (x*x for x in range(5))

iterable

#결과
<generator object <genexpr> at 0x7f5688c02ad0>

b = pd.Series(iterable)

#결과
0     0
1     1
2     4
3     9
4    16
dtype: int64

np.array에 값을 넣을 때와는 다르게 값의 형태로 나온 것을 확인 가능하다.

 

data를 python의 dictionary를 넣는다면 key값이 index가 되며 value값이 data가 되어 나온다. 

dic = {'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5}

a = pd.Series(dic)

#결과
a    1
b    2
c    3
d    4
e    5
dtype: int64

 

만약 dictionary의 key값을 사용하지 않고 직접 지정하고 싶으면 다음과 같이 index를 지정해 주면 된다.

 

dic = {'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5}
index = ['b', 'e', 'a', 'd', 'c']

a = pd.Series(dic, index = index)

#결과
b    2
e    5
a    1
d    4
c    3
dtype: int64

만약 index의 수가 data의 수보다 많으면 다음과 같이 NaN(not a number)가 들어가게 된다. NaN은 Pandas에서 누락된 값 또는 NA으로 취급된다.

 

dic = {'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5}
index = ['b', 'e', 'a', 'd', 'c', 'f']

a = pd.Series(dic, index = index)

#결과
b    2.0
e    5.0
a    1.0
d    4.0
c    3.0
f    NaN
dtype: float64

scalar value와 값이 없는 Series또한 만들 수 있다.

 

a = pd.Series()
b = pd.Series(42)

a
#결과
Series([], dtype: float64)

b
#결과
0    42
dtype: int64

Index 

index는 우리가 데이터의 이름을 붙여 구분하기 편하게 사용할 수 있을 뿐 아니라 다양한 기능을 제공한다.

 

pd.Series에서 index를 이용하여 단일 값을 선택 또는 여러 값을 선택할 수 있다.

 

index는 앞서 pd.Series를 생성하면서 보았듯이 각 데이터 값의 이름이라고 할 수 있으며 default값을 0부터 시작하는 자연수가 붙게 된다. 또한 pd.Series를 선언할 때 index 값을 선언 가능하다. 또한 index만을 따로 뽑을 수 있으며 array_like형 데이터를 넣어주면 Series에서 index 변경이 가능하다.

a = pd.Series([1,2,3,4,5], index = ['a', 'b', 'c', 'd', 'e'])

#결과
a    1
b    2
c    3
d    4
e    5
dtype: int64

a.index
# a.keys()를 써도 같은 결과가 나온다
#결과
Index(['a', 'b', 'c', 'd', 'e'], dtype='object')

a.index = ['b', 'a', 'c', 'd', 'e']

#결과
b    1
a    2
c    3
d    4
e    5
dtype: int64

 

우리가 선언한 index를 이용하여 Series 데이터를 다룰 수 있다. 

 

a = pd.Series([1,2,3,4,5], index = ['a', 'b', 'c', 'd', 'e'])

a['a']

#결과
1

a[['c', 'a', 'b']]

#결과
c    3
a    1
b    2
dtype: int64

a['a':'c']

#결과
a    1
b    2
c    3
dtype: int64

다음은 index를 이용할 수 있는 다양한 결과들이다.

pd.Series는 index에 데이터 값을 매핑하고 있으므로 파이썬의 dictionary와 비슷하다.  

a.keys()

#결과
Index(['a', 'b', 'c', 'd', 'e'], dtype='object')

list(a.items())

#결과
[('a', 1), ('b', 2), ('c', 3), ('d', 4), ('e', 5)]

'b' in a

#index값이 a에 있는지 확인 가능하다.
#결과
True

 

Dtype

pd.Series의 data type을 설명한다. optional이기 때문에 딱히 지정해 주지 않아도 상관없다. 만약 지정하지 않는다면 우리가 집어넣어주는 data에서 data type을 추론한다.

자세한 data type은 다음 링크를 참조하면 된다. 

https://pandas.pydata.org/docs/user_guide/basics.html#basics-dtypes

 

Essential basic functionality — pandas 1.4.1 documentation

Here we discuss a lot of the essential functionality common to the pandas data structures. To begin, let’s create some example objects like we did in the 10 minutes to pandas section: Descriptive statistics There exists a large number of methods for comp

pandas.pydata.org

다음과 같이 data에 int64만 넣었으므로 dtype는 int64가 나와야 하지만 dtype을 float64로 설정해 주었기 때문에 data가 float64형태로 변하였다.

a = pd.Series([1,2,3,4,5], index = ['a', 'b', 'c', 'd', 'e'], dtype = 'float64')

#결과
a    1.0
b    2.0
c    3.0
d    4.0
e    5.0
dtype: float64

Name

pd.Series에 주는 이름이다. 

 

다음의 예시를 보면 출력값에 이름이 나오는 것을 확인 가능하다. 또한 추가 함수인 name을 이용하여 이름만 꺼내거나 바꿀 수 있다.

a = pd.Series([1,2,3,4,5], index = ['a', 'b', 'c', 'd', 'e'], name = 'a')

#출력
a    1
b    2
c    3
d    4
e    5
Name: a, dtype: int64

a.name

#출력
'a'

a.name = b

#출력
a    1
b    2
c    3
d    4
e    5
Name: b, dtype: int64

 

Copy

input data를 copy하며 이 parameter에 영향받는 input data는 Series와 1d ndarray만 영향을 받는다.

 

자세히 말하면 Series와 1d ndarray를 input data로 사용하여 copy를 True로 사용하지 않는다면 input data에서 데이터를 연결시켜 사용하기 때문에 데이터를 수정하면 기존 input data도 수정하게 된다.

다음의 예시를 보면 편하다.

data = np.array([1,2,3,4,5])
a = pd.Series(data, index = ['a', 'b', 'c', 'd', 'e'])

#data 결과
array([1, 2, 3, 4, 5])

#a 결과

a    1
b    2
c    3
d    4
e    5
dtype: int64

a['a'] = 777

#a 결과
a    777
b      2
c      3
d      4
e      5
dtype: int64

#data 결과
array([777,   2,   3,   4,   5])

이를 방지하기 위해 copy = False를 넣어준다면 input data를 사용하는 게 아닌 복사한 데이터를 사용하기 때문에 기존 input data의 값은 변하지 않는다.

 

data = np.array([1,2,3,4,5])
a = pd.Series(data, index = ['a', 'b', 'c', 'd', 'e'], copy = True)

#data 결과
array([1, 2, 3, 4, 5])

#a 결과

a    1
b    2
c    3
d    4
e    5
dtype: int64

a['a'] = 777

#a 결과
a    777
b      2
c      3
d      4
e      5
dtype: int64

#data 결과
array([1,   2,   3,   4,   5])

만약 input data가 Series나 1d ndarray가 아닌 다른 data라면 copy를 False로 해도 영향을 받지 않는다.

data = [1,2,3,4,5]
a = pd.Series(data, index = ['a', 'b', 'c', 'd', 'e'])

#data 결과
array([1, 2, 3, 4, 5])

#a 결과

a    1
b    2
c    3
d    4
e    5
dtype: int64

a['a'] = 777

#a 결과
a    777
b      2
c      3
d      4
e      5
dtype: int64

#data 결과
[1,   2,   3,   4,   5]

'Python > pandas' 카테고리의 다른 글

1-3. Pandas.Series - Pandas.Series.isnull  (2) 2022.03.12
1-2. Pandas.Series - index를 이용한 데이터 다루기  (0) 2022.03.12
0. Pandas 소개  (0) 2022.03.09

클래스나 함수 선언을 보면 자주 input으로 array_like형 데이터 타입을 요구하는 경우가 많다. 그러나 array_like라고 하면 이해하기 힘든 경우가 많아 한번 정리하려고 한다.

 

Numpy의 공식 홈페이지에서는 다음과 같이 설명되어 있다.

 

array_like는 array로 해석될 수 있는 모든 scalar또는 sequence이다. 또한 여기에는 list(중첩과 다른 요소 유형을 포함하는)와 tuple 또한 포함된다.

 

일반적으로 파이썬에서 array_like 구조로 배열된 수치 데이터는 np.array()함수를 사용하여 array로 변환이 가능하다. 예시로는 tuple과 list가 있다. 따라서 가장 간단하게 array_like인지 확인 가능한 방법이다.

 

그러나 이러한 방법은 array_like가 무엇인지에 대한 확실한 정답을 내려주지는 않는다. 이는 array_like라는 단어가 입력이 무엇이 들어와야 하는지 정의하는 것이 아닌 입력을 설명하는 것에 가깝기 때문이다.

 

이는 Numpy에서 유연하게 데이터를 얻기 위해 이러한 형태로 만들었을 것이라 생각한다.

 

https://stackoverflow.com/questions/40378427/numpy-formal-definition-of-array-like-objects

 

numpy: formal definition of "array_like" objects?

In numpy, the constructors of many objects accept an "array_like" as first argument. Is there a definition of a such object, either as an abstract meta class, or documentation of the methods is sho...

stackoverflow.com

다음과 같은 stack overflow에서 소스코드를 분석하여 array_like가 무엇인지 확인하였다.

 

결과를 확인한다면 다음과 같은 input을 array_like라고 정의한다.

위와 같이 다양한 방법으로 처리되며 일일히 확인이 불가능하여 일반적으로 배열과 유사한 것은 모두 가능하다고 적어놓은 것 같다.

 

iterable은 파이썬 표준 용어로써 반복될 수 있는 모든 것을 나타낸다.

간단한 예를 들어 우리는 문자열을 변수에 넣어주면 이는 for 문을 통해 나올 수 있다.

 

여기서 한 가지 주의해야 할 점은 'array_like에 속해있는 대부분의 데이터 타입은 iterable 데이터 타입이니 iterable 데이터 타입이 array_like과 같나?'라는 생각을 할 수 있다. 

 

간단한 예를 들어 반박 가능한데 스칼라 값은 array_like에 속해있지만 iterable한 데이터 타입이 아니다.

즉 a = 3은 np.array(a)에서 오류가 나오지 않지만 for문을 통해 돌리면 에러가 나온다.

 

또한 iterable 데이터 타입은 np.array를 통해서 Numpy array으로 만들수 없다.

iterable = (x*x for x in range(5))

iterable

#결과
<generator object <genexpr> at 0x7f6fafed06d0>

np.array(iterable)

#결과
array(<generator object <genexpr> at 0x7f6fafa93f50>, dtype=object)

np.fromiter(iterable, float)

#결과
array([ 0.,  1.,  4.,  9., 16.])

다음의 결과를 보면 generator object인 iterable을 만들었다. 이를 np.array에 삽입하였으며 결과를 확인해 보면 object형태로 들어갔으며 배열을 형태가 나오지 않은 것을 볼 수 있다. 따라서 iterable 형태가 array_like이 아닌것을 확인 가능하다. 이러한 문제는 np.fromiter를 이용하여 해결 가능하다. 

 

 

'Python > numpy' 카테고리의 다른 글

난수 생성 - numpy .random.permutation  (0) 2022.03.09
난수 생성 - np.random.seed, np.random.RandomState  (0) 2022.03.08

Pandas는 데이터를 다루는데 있어 자주 사용되는 패키지이다. 주로 NumPy, SciPy, scikit-learn, matplotlib와 같이 사용한다. Pandas는 주로 NumPy의 스타일을 차용하였지만, NumPy는 단일 산술 배열 데이터를 다루는데 특화되어 있는 것과는 다르게 Pandas는 표(table), 시계열(series)등 다양한 형식의 데이터를 다루는데 초점을 맞춰 설계했다.

 

Pandas를 import할 때 컨밴션은 주로 다음과 같이 사용한다.

 

import pandas as pd

 

 

numpy.random.permutation(x)

시퀀스를 무작위로 치환하거나 치환된 범위를 반환해 주는 함수이다.

 

Parameter 

  • x : int or array_like

Returns

  • out : ndarray

input인 x는 2가지가 들어갈 수 있다.

 

첫 번째는 int가 들어갈 수 있다. 함수는 이를 범위로 인식하고 범위에 해당하는 정수형 ndarray배열을 무작위로 섞어서 반환한다.

 

다음은 10을 넣었을 때의 예제이다.

import numpy as np

per = np.random.permutation(10)

#결과
array([8, 7, 4, 3, 2, 9, 0, 1, 5, 6])

 

두 번째 input으로는 array_like가 들어갈 수 있다. 이는 array_like의 원소를 랜덤 하게 섞어서 ndarray의 형태로 반환하여 준다.

 

다음은 리스트를 넣었을 때의 예제이다.

per = np.random.permutation([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

#결과
array([3, 1, 6, 5, 7, 8, 9, 0, 4, 2])

 

또한 x는 다차원 배열이 들어갈 수도 있다. 그러나 이렇게 되면 가장 처음에 있는 차원을 기준으로만 섞이게 된다.

 

다음은 3x3 배열과 3x3x3배열의 예제이다.

arr1 = np.arange(9).reshape((3,3))
arr2 = np.arange(27).reshape((3,3,3))

arr1

#결과
array([[0, 1, 2],
       [3, 4, 5],
       [6, 7, 8]])
       
arr2

#결과
array([[[ 0,  1,  2],
        [ 3,  4,  5],
        [ 6,  7,  8]],

       [[ 9, 10, 11],
        [12, 13, 14],
        [15, 16, 17]],

       [[18, 19, 20],
        [21, 22, 23],
        [24, 25, 26]]])
        
np.random.permutation(arr1)

#결과
array([[3, 4, 5],
       [6, 7, 8],
       [0, 1, 2]])
       
np.random.permutation(arr2)

#결과
array([[[18, 19, 20],
        [21, 22, 23],
        [24, 25, 26]],

       [[ 0,  1,  2],
        [ 3,  4,  5],
        [ 6,  7,  8]],

       [[ 9, 10, 11],
        [12, 13, 14],
        [15, 16, 17]]])

3x3 메트릭스인 arr1은 맨 앞인 행을 기준으로 랜덤 하게 바뀌는 것을 확인 가능하며 뒤의 열은 섞이지 않는 것을 확인 가능하다.

 

3x3x3 텐서인 arr2는 뒤의 3x3 메트릭스는 바뀌지 않는 것을 확인 가능하며 3개의 메트릭스의 순서만 바뀌는 것을 확인 가능하다.

'Python > numpy' 카테고리의 다른 글

array_like 데이터 타입(data type)  (0) 2022.03.09
난수 생성 - np.random.seed, np.random.RandomState  (0) 2022.03.08

numpy.random 모듈은 python 내장 random 함수를 보강하여 다양한 종류의 확률 분포로부터 효과적으로 표본 값을 생성하는데 사용 가능하다.

 

numpy.random은 매우 큰 표본을 생성하는데 파이썬 내장 모듈보다 수십 배 빠르다. 

 

numpy.random을 엄밀하게 말하면 유사 난수라 부르는데, 이는 난수 생성기의 시드값에 따라 정해진 난수를 알고리즘으로 생성하기 때문이다. 즉, 컴퓨터 프로그램에서 무작위 수를 구할때는 어떠한 특정 시작 숫자를 기준으로 컴퓨터가 정해진 알고리즘에 의해 마치 난수처럼 보이는 수열을 생성한다. 이러한 시작 숫자를 시드(seed)라고 한다. 또한 생성된 난수는 다음번 난수 생성을 위한 시드가 된다. 시드는 보통 자동으로 정해지지만 사람이 수동으로 정할 수 있다.

 

수동으로 시드를 정한다면 이후의 난수들을 예측할 수 있다. 이는 프로그램을 돌릴때 결과의 재현성을 위해 사용한다. 예를 들어 딥러닝 프로그램에 parameter를 특정 시드를 사용하여 정해준다면 parameter의 초기값에 의해 성능이 바뀌는 일이 일어나지 않는다.

 

Numpy의 난수 생성기의 시드값은 다음과 같이 변경 가능하다.

import numpy as np

np.numpy.seed(123)

 이를 이용하여 numpy에서 제공하는 시드값은 전역 난수 시드값을 이용한다.

 

a = np.random.randn(5)

# 결과 
array([-1.0856306 ,  0.99734545,  0.2829785 , -1.50629471, -0.57860025])

b = np.random.randn(5)

# 결과
array([ 1.65143654, -2.42667924, -0.42891263,  1.26593626, -0.8667404 ])

다음의 과정을 본다면 시드를 123으로 준다면 처음 난수 결과값은 항상 -1.0856306이 나올 것이다. 다음 난수 결과값은 -1.0856306을 시드로 사용하여 생성한다.

np.random.seed(123)

a = np.random.randn(1)

# 결과
array([-1.0856306])

b = np.random.randn(1)

#결과
array([0.99734545])

다음과 같이 시드 123을 사용하여 난수을 2개 만들어보면 위의 a의 5개의 난수 값의 처음 두 개와 일치하는 것을 볼 수 있다.

 

여기에서 문제는 np.random.seed를 사용하여 난수를 생성한다면 앞으로 numpy를 사용하여 만드는 모든 난수값이 시드의 값에 영향을 받게 된다. 이는 서로 다른 시드를 사용하고 싶을 때 고려해줄 것이 많게 된다. 따라서 난수 생성기로부터 격리된 난수 생성기를 만들고 싶다면 다음과 같은 코드를 사용하면 된다.

 

np.random.seed(123)
rns = np.random.RandomState(123)

a = np.random.randn(5)

#결과
array([-1.0856306 ,  0.99734545,  0.2829785 , -1.50629471, -0.57860025])

rns.randn(5)

#결과
array([-1.0856306 ,  0.99734545,  0.2829785 , -1.50629471, -0.57860025])

  np.random.RandomState를 사용한다면 rns라는 object가 생기며 이를 통해 난수에 접근 가능하다. 즉 특정 시드값을 기준으로 생성되는 난수가 필요할 때만 접근 가능하다.

 

예를 들어 전역 시드값을 설정해주는 np.random.seed(123)을 주었으면 위에서 보았듯이 난수를 설정하는데 있어 초기값은 -1.0856306이 나와야 하며 a를 통해 난수 5개를 만들었을때 이를 확인 가능하다. 또한 random.RandomState를 통해 생성한 rns난수생성기를 통해 생성된 5개의 난수를 보면 a의 결과와 같은 것을 확인 가능하다. 이는 서로 다르게 시드값이 적용되는 것을 의미한다.

 

'Python > numpy' 카테고리의 다른 글

array_like 데이터 타입(data type)  (0) 2022.03.09
난수 생성 - numpy .random.permutation  (0) 2022.03.09

+ Recent posts