기본 콘텐츠로 건너뛰기

[data analysis]로그-노말 분포(Log-normal distribution)

[numpy] array 함수

array 함수

배열은 ndarray이라고도 하는데 이 용어는 N-dimensional array의 약어로서 여러개의 값들을 구조적으로 나타낼 수 있는 numpy 라이브러리 기본 데이터형입니다. 다음과 같은 특성을 가집니다.

  1. 배열은 여러개의 리터럴(literal, row data)을 포함할 수 있으며 각각을 요소(element)라고 합니다.
  2. 배열 내에 각 요소들은 인덱스(index)라고 하는 음이 아닌 정수형태의 특정한 번호를 가집니다.
  3. 모든 요소는 동일한 유형이어야 합니다.
  4. 배열은 여러 차원으로 구성할 수 있으며 차원을 ndim속성으로 확인할 수 있습니다.
  5. 배열의 모양은 각 차원의 수를 표시한 것으로 shape속성으로 확인 할 수 있습니다.

numpy 배열 객체의 생성은 기본적으로 np.array()함수를 사용합니다.

  • np.array(객체, dtype=None)
    • 객체는 리스트형입니다.
    • 각 요소의 자료형은 dtype으로 지정할 수 있습니다.
      dtype=None(기본값)일 경우는 입력된 자료에 따라 자동으로 지정됨

다음은 1차원 배열을 생성하기 위해 리스트 형식인 [1, 2, 3]을 np.array()함수에 전달한 것입니다.

import numpy as np
a = np.array([1, 2, 3])
a  #(1)
array([1, 2, 3])
print(a) #(2)
[1 2 3]

위 코드 (1)과 같이 객체를 반환하면 배열(array)가 명시되는데 반해 다음 코드(2)와 같이 print()함수에 의한 출력은 단지 내용만을 반환합니다.

위 객체 a는 1차원 벡터로서 모든 요소들이 하나의 대괄호로 묶여있는 상태입니다. 다음 객체 A는 대괄호 내에 두개의 별도의 대괄호를 포함하는 구조입니다.

A=np.array([[1,2], [3,4]])
print(A)
[[1 2]
 [3 4]]

위 객체 A는 pandas.DataFrame() 함수를 적용하여 표의 형태로 나타낼 수 있습니다.

Adf=pd.DataFrame(A)
Adf
0 1
0 1 2
1 3 4

위 결과와 같이 객체 A는 가로축(행)과 세로축(열)으로 구성됩니다. 이와 같이 여러개의 대괄호(리스트)가 하나의 대괄호내에 존재하는 객체를 행렬(Matrix)라고 하며 2차원으로 여러개의 벡터들을 포함합니다. 이와 같이 array() 함수는 1차원 이상이 여러 차원의 객체(배열)을 생성합니다. 이 함수에서 차원의 대괄호의 수로 조절합니다.

다음 객체는 각 리스트를 별도의 대괄호로 묶은 상태이므로 각 리스트 객체는 2차원 입니다. 즉, 두개의 2차원 객체가 생성되며 이들을 하나의 대괄호로 묶었습니다. 결과적으로 3차원이 됩니다.

B=np.array([[[1,2]], [[3,4]]])
print(B)
[[[1 2]]

 [[3 4]]]

np.array() 함수에 의해 생성된 객체의 차원은 .ndim 속성으로 확인할 수 있습니다.

print(f'객체 a의 차원: {a.ndim}\n객체 A의 차원: {A.ndim}\n객체 B의 차원: {B.ndim}')
객체 a의 차원: 1
객체 A의 차원: 2
객체 B의 차원: 3

댓글

이 블로그의 인기 게시물

유사변환과 대각화

내용 유사변환 유사행렬의 특성 대각화(Diagonalization) 유사변환(Similarity transformation) 유사변환 n×n 차원의 정방 행렬 A, B 그리고 가역 행렬 P 사이에 식 1의 관계가 성립하면 행렬 A와 B는 유사하다고 하며 이 변환을 유사 변환 (similarity transformation)이라고 합니다. $$\begin{equation}\tag{1} A = PBP^{-1} \Leftrightarrow P^{-1}AP = B \end{equation}$$ 식 1의 유사 변환은 다음과 같이 고유값을 적용하여 특성 방정식 형태로 정리할 수 있습니다. $$\begin{align} B - \lambda I &= P^{-1}AP – \lambda P^{-1}P\\ &= P^{-1}(AP – \lambda P)\\ &= P^{-1}(A - \lambda I)P \end{align}$$ 위 식의 행렬식은 다음과 같이 정리됩니다. $$\begin{align} &\begin{aligned}\textsf{det}(B - \lambda I ) & = \textsf{det}(P^{-1}(AP – \lambda P))\\ &= \textsf{det}(P^{-1}) \textsf{det}((A – \lambda I)) \textsf{det}(P)\\ &= \textsf{det}(P^{-1}) \textsf{det}(P) \textsf{det}((A – \lambda I))\\ &= \textsf{det}(A – \lambda I)\end{aligned}\\ &\begin{aligned}\because \; \textsf{det}(P^{-1}) \textsf{det}(P) &= \textsf{det}(P^{-1}P)\\ &= \t

[matplotlib] 히스토그램(Histogram)

히스토그램(Histogram) 히스토그램은 확률분포의 그래픽적인 표현이며 막대그래프의 종류입니다. 이 그래프가 확률분포와 관계가 있으므로 통계적 요소를 나타내기 위해 많이 사용됩니다. plt.hist(X, bins=10)함수를 사용합니다. x=np.random.randn(1000) plt.hist(x, 10) plt.show() 위 그래프의 y축은 각 구간에 해당하는 갯수이다. 빈도수 대신 확률밀도를 나타내기 위해서는 위 함수의 매개변수 normed=True로 조정하여 나타낼 수 있다. 또한 매개변수 bins의 인수를 숫자로 전달할 수 있지만 리스트 객체로 지정할 수 있다. 막대그래프의 경우와 마찬가지로 각 막대의 폭은 매개변수 width에 의해 조정된다. y=np.linspace(min(x)-1, max(x)+1, 10) y array([-4.48810153, -3.54351935, -2.59893717, -1.65435499, -0.70977282, 0.23480936, 1.17939154, 2.12397372, 3.0685559 , 4.01313807]) plt.hist(x, y, normed=True) plt.show()

R 미분과 적분

내용 expression 미분 2차 미분 mosaic를 사용한 미분 적분 미분과 적분 R에서의 미분과 적분 함수는 expression()함수에 의해 생성된 표현식을 대상으로 합니다. expression expression(문자, 또는 식) 이 표현식의 평가는 eval() 함수에 의해 실행됩니다. > ex1<-expression(1+0:9) > ex1 expression(1 + 0:9) > eval(ex1) [1] 1 2 3 4 5 6 7 8 9 10 > ex2<-expression(u, 2, u+0:9) > ex2 expression(u, 2, u + 0:9) > ex2[1] expression(u) > ex2[2] expression(2) > ex2[3] expression(u + 0:9) > u<-0.9 > eval(ex2[3]) [1] 0.9 1.9 2.9 3.9 4.9 5.9 6.9 7.9 8.9 9.9 미분 D(표현식, 미분 변수) 함수로 미분을 실행합니다. 이 함수의 표현식은 expression() 함수로 생성된 객체이며 미분 변수는 다음 식의 분모의 변수를 의미합니다. $$\frac{d}{d \text{변수}}\text{표현식}$$ 이 함수는 어떤 함수의 미분의 결과를 표현식으로 반환합니다. > D(expression(2*x^3), "x") 2 * (3 * x^2) > eq<-expression(log(x)) > eq expression(log(x)) > D(eq, "x") 1/x > eq2<-expression(a/(1+b*exp(-d*x))); eq2 expression(a/(1 + b * exp(-d * x))) > D(eq2, "x") a * (b * (exp(-d * x) * d))/(1 + b