728x90
반응형

경계층 영문 약어 정리(Stull, 1988)

BL   Boundary Layer
   or Planetary Boundary Layer (PBL)

   or  Atmospheric Boundary Layer (ABL)

CL   Cloud Layer

FA   Free Atmosphere

ML  Mixed Layer

   or Convective Boundary Layer (CBL)

RL   Residual Layer

SBL  Stable Boundary Layer

    or Nocturnal boundary Layer (NBL)

SCL  Subcloud Layer

SL    Surface Layer 

 

h   Top of the stable boundary layer

 or Top of the NBL

zi   Top of the mixed layer

  or the average base of the overlying stable layer

zr   Top of the residual layer

  or the average based of the overlying stable layer

zb   Top of the subcloud layer 

  or the height of cloud base, near the Lifting Condensation Level (LCL)

 

 

미기상 교재 내 생소할 수 있는 용어들

미기상학 

  • 경계층 기상학과 동일어

"경험적으로" 또는 "선험적으로" 

  • 실험실 내 관찰 실험이나 야외 필드에서의 관측을 통해서 분석한 결과를 바탕으로

플럭스 

  • 단위시간당 단위면적당 유량 또는 대기오염에서 배출량의 개념

거칠기 요소 

  • 지표 근처의 유체 흐름에 마찰력으로 작용하는
  • 빌딩, 도로, 나무, 잔디, 공원 등
  • 프로세스 (process)  작용(O) 과정(x)

응력 

 

난류 Turbulence

  • 유체 흐름이 무질서한 특성으로 설명된다. 
  • 경계층 내에서의 운동은 거의 난류

아층 (sub-layer) 또는 아지표 (sub-surface)

  • 지표 근처의 경계층 내 하층 또는 부층(sub-layer).
  • 지표면에 인접한 얇은 층 영역

분자 아층 (molecular sublayer)

  • 지표 경계면 (interface) 인접 부근.
  • 분자 아층은 지표에서 <1 mm 의 공기층으로서, 공기의 주된 열 전달 방법은 전도(conduction)로서 고체와 같다.
  • 경계면에서 수 mm 만 올라가도 공기의 주된 열 전달 방법은 이류(advection)과 대류(convection)이다. 
  • 호수나 해양에서 분자 아층은 수 m 이다.

끌림 항력 (drag force):

  • 지표면은 대기 운동에 마찰 저항을 가하여 공기를 천천히 움직이도록 한다.
  • 작용-반작용의 법칙에 의해서 지표 부근의 공기는 반대로 지표면에 동일한 크기의 끌림 항력 (drag force)를 가한다고 생각할 수 있다.
  • 지표면이 더 거칠수록 단위면적당 끌림 항력은 더 커진다.
     

미량기체 

  • tracer 또는 추적자로 불린다. 
  • passive-trace와 non-passive 또는 active tracer 로 나뉘는데, 차이는 화학반응 유무이다. 

 

Surface Layer (지표층 또는 접지층)

  • PBLH의 약 1/10 높이 층. 코리올리 효과를 무시할 수 있는 층.
  • 기상 mast 또는 tower 에 의해서 관측 가능.
  • 높이에 따른 기상 변수들이 가장 급격하게 변하고, 운동량, 열, 질량 교환도 이 층에서 발생한다.
  • 따라서, outer layer 보다 surface layer 에 더 많은 관심이 있다.

거칠기 층 Roughness layer 

  • 또는 캐노피 층 (canopy layer)
  • 지표층 아래 거칠기 요소들의 영향이 쉽게 식별되는 층. 
  • 도시로 인해 발달한 거칠기 층은 야간에 도시 경계층에 포함. 

경계층 Boundary layer 

  • 물체 표면과 바로 인접해 이는 유체의 층으로 정의되는데,  이 층에서는momentum, heat, mass의 상당한 교환이 발생하고,  속도, 온도, 질량 농도 가 급격하게 변한다. 

 

대기 경계층  Atmospheric Boundary Layer (ABL)

  • 행성 경계층 

행성 경계층 Planetary boundary layer (PBL)

  • 대기 경계층
  • 수 시간~ 약 하루 정도 시간 규모에서 대기-지표 사이의 상호작용의 결과로 형성된다. turbulent transfer 나 mixing 에 의해 지표면 마찰, 가열 등의 영향은 즉시 전체 PBL에  전달된다.
  • PBL = surface layer (지표층) + outer layer (바깥층)
  • 연직 범위 ~ 1km 정도 (중립일때).
  • 시간에 따라서 변동. 이른 아침에 <100m , 오후에 수 km 까지 변동.
  • 수평 범위: 수십 m ~ 수 km

PBLH  (Planetary Boundary Layer Height)

  • PBLH변동은 중규모와 종관 시스템과 연관있다.
  • 침강(하강운동)과 고기압에 의한 하층 수평 발산이 일어나는 경우 PBLH 는 얇아지고
  • 구름 발달과 연관된 저기압과 관련되면, PBLH가 높아진다. 일반적으로 구름 하단을 PBL top 으로 간주 (Ceilometer 로 측정).
  • 대기 오염의 관점에서 PBLH은 대기 오염 물질이 PBL 내에서 혼합되는 층의 두께 (mixing depth)를 말한다.
  • 일반적으로 free atmosphere 보다 훨씬 오염이 심각. aircraft 관측시 발견됨.

 

 

 

가온도 (Potential temperature):

  • 습윤공기를 그것과 같은 압력과 밀도의 건조공기로 바꾸어 놓았을 때, 그 건조공기가 가져야 할 온도.
  • 같은 조건에서 수증기는 건조공기보다 가벼우므로 가온도는 습윤공기 자체의 온도보다 높다.
  • 온도 T, 비습 q인 경우,습윤공기의 가온도 Tv 근사적으로 Tv=T(1+0.61q)이다.
  • 실제 공기는 습윤공기이므로 가온도, 가온위를 생각해야 하나, 일반적으로 간단한 이해를 위해 건조공기에 대해 온도 또는 온위를 많이 사용.
728x90
반응형
728x90
반응형

상층 제트 

대류권 상부 또는 권계면 부근의 좁은 영역에 집중된 기류.

북반구에서는 여름보다 겨울에 강하고 위치도 남쪽으로 내려온다.

고층일기도 상에서 2개의 제트가 존재

한대전선제트 또는 극제트 (중위도); 아열대제트 (30도 부근)

 

 

 

 

 

하층제트

700 – 850hPa 부근에 나타나는 강풍대로서 풍속과 위치변화가 크다.

수증기의 수송 및 수평발산과 상승역을 만드는 데 중요한 역할을 한다.

호우역은 하층제트의 저기압성 시어 영역에서 풍속이 감소하는 곳에 나타난다.

 

 

그림. (좌) 850hPa 최대 풍속지점과 하층제트 축을 기준으로 2개의 호우 구역으로 구분한 모식도 (우) 연직 구조

 

 

 

야간 제트 (Nocturnal jet)

맑은 밤에 발생하는 강풍.

밤에 지표 부근 기온이 떨어지고 역전층이 발생하면, 역전층 내에서는 높이에 따라 기온이 증가하는데 이때 대기 안정도가 높아지고 연직운동이 억제된다.

따라서, 공기는 수평방향으로만 주로 흘러가게 되는데, 이를 야간제트라고 부른다.

경계층 내에서의 바람

 

728x90
반응형
728x90
반응형

지표면 에너지 부근 균형

 

지표에 도달한 태양복사 에너지의 일부는 반사되고, 나머지는 지중에 흡수되고, 그 비율은 지표상태(물, 땅, 얼음, 등)에 따라 다름. 


바다

물은 비열이 높고, 해양 상층부에서의 대류는 약 100m의 혼합층에 열을 보낸다.

해양은 막대한 열저장 용량을 가지고 있고, 온도변화는 느리며, 계절의 변화도 육지보다 시간차이가 있다. 


육지

육지는 열저장 용량이 상대적으로 작고, 비열은 평균적으로 물의 약 1/4정도이다. 지표면으로부터 지표 아래로의 열 이동 메커니즘은 열전도(heat conduction)이고, 토양의 경우에 열전도는 작다. 

온도의 일변동은 1m 이하, 연변동일 경우는 수 m 깊이까지.

육지의 표면은 빠르게 가열되고, 빠르게 에너지 균형을 이룬다. 예를 들어, 태양복사흡수량의 급격한 증가는 빠른 온도 상승을 야기한다. 증가된 장파복사는 전도 등 온도변화에 관련되는 현열, 증발 등 상태변화와 관련된 잠열과 함께 거의 정확하게 에너지 균형을 이룬다.

 

육상에서의 에너지 균형

지구 표면에 도달하는 순 복사량(Rn; Net radiation)은 다음 식과 같이 묘사될 수 있다.

(16)

각 항은 열 플럭스 (즉, 단위 시간당 단위 면적을 통과하는 열 전달율). 단위는 Jsˉ¹mˉ² 또는 Wmˉ².

Rs:

하향 태양복사 플럭스 또는 일사량. 직달(direct) 또는 산란(diffuse) 복사를 포함하고, 0.3~4.0㎛의 범위에서 일어나며, 0.4~0.7㎛의 범위에서 절반이 발생.

Rs:

반사된 태양복사량. α Rs⇓와 같다. 여기서 α 는 알베도(Albedo).

Rl:

구름, 에어로솔, 그리고 수증기나 CO2와 같은 태양복사의 흡수에 관여하는 기체들로부터 방사되어 들어오는 장파복사량.

Rl:

지표로부터 나가는 복사량. 대부분의 자연 지표면(natural surfaces )의 방사율은 ~1에 가깝기 때문에, RlσTs4이고, 여기서 Ts는 지표면 온도. 최대온도 시간에서 가장 크고, 최소온도 시간에 가장 적다.

 

그림 18. 맑은 여름날 잔디 지표면에서의 에너지 수지 (영국 로댐스테드, 북위 52도)

 

 

 

순복사량의 활용

(17)

각 항은 양 또는 음의 값을 가짐. 


Rn   순 복사량 또는 순복사 플럭스. 단위 시간(초)당, 단위 면적 당 입사되는 순 복사 에너

G    지중 플럭스. 전도에 의한 육지에서의 열 흐름

H    현열 플럭스. 분자 확산에 의해 층류경계층을 통하여 대기로 전달된 현열

LE   잠열 플럭스. 잠열×증발률로 수분 증발(얼음 상태 포함)에 사용되는 열

 

야간

지표면 온도가 지표 아래 온도보다 낮을 경우, 열 에너지는 상향 전도될 수 있고, 또한, 응결되면 잠열이 증가.

해양

LEH보다 크다.

육지

LEH가 비슷한 크기이지만, 지표 종류에 따라 상당히 다양.

입사되는 복사량이 방출되는 복사량을 초과하면 지표온도는 상승

들어오는 복사량이 나가는 복사량보다 적으면 지표온도는 하강

 

대 또는 최소 기온의 발생은 입사 복사량과 방출 복사량이 같아지는 시점에서 발생(그림 19).

 

 

그림 19. 입사되는 복사량(SW)와 방출되는 복사량(LW)의 균형. (열 전도 및 난류 전달 무시)

 

 

 

 

보우엔 비(Bowen ratio)

잠열과 현열 플럭스의 상대적인 중요성은 보우엔 비(Bowen Ratio)로 알려진 파라메터로 정량화 가능.

보우엔 비는 현열 플럭스와 잠열 플럭스의 비로 다음과 같다.

(18)

 

보우엔 비는 다음의 식에 의해서 근사될 수 있다.


(19)

 

 

r     습도혼합비(Humidity Mixing Ratio)

Cp  정압비열

L    증발 잠열

 

전형적인 주간의 β 값: 

  • 열대 해양 상: ~0.1
  • 습한 열대 밀림: 0.1~0.3
  • 온대 산림 및 초원: 0.4~0.8
  • 반건조(semi-arid )지역: 2~6
  • 사막: >10

수분 변화에 따른 β 값:

그림 20은 한 지점에서 지표가 습윤 및 건조 상태일 경우의 의 변화.
지표가 습한 경우β값은 작고, 최대온도는β가 큰 값이었을 때만큼 도달하지 못한다.

이것은 태양복사의 많은 양이 지표 수분의 증발에 소비되기 때문.

따라서, 사막에서의 주간 온도는 같은 위도 상의 열대 우림 지역에 비해 매우 높다.

 

 

그림 20. 초원지대에서의 순복사량(Rn)의 에너지 균형 24시간 변동 (미국 네브라스카 초원지대):
(a) 강수 후, (b) 건조하고 맑은 날씨

 

 

 

 

 

 

출처: 기상청

728x90
반응형
728x90
반응형

경계층 발달의 일변화 

 

맑고 바람이 약한 대기 상태에서의 경계층의 일변동 (그림16)

주간: 지표 가열에 따른 대류 혼합 경계층(혼합층)이 발달.
일몰 경:  지면이 냉각되기 시작하고, 지표에 안정 경계층(안정층)이 발달.

야간:  안정층은 야간 동안의 지속적인 냉각에 의하여 점차적으로 깊어지고, 이 층 위에 있는 잔여층(Residual Layer)은 주간의 대기 혼합의 잔재. 온위(Constant Potential Temperature)가 중립 프로파일을 보임.

일출 후: 새로운 혼합층이 안정층 아래에서 발달하고, 이어지는 가열에 의하여 더 깊어지며, 안정 상태는 파괴됨.

그림 16. 맑고 바람이 약한 대기 상태에서의 경계층의 일변동. 빗금친 부분은 역학적 난류가 지배적인
지표층(또는 접지 경계층). 

 

주간의 경계층은 불안정하고, 야간의 경계층은 안정하여 대수법칙 적용 불가능.

지표부근 지표층(접지경계층, 그림 16의 빗금 영역)에서는 역학적 혼합이 지배적이므로, 대수법칙 프로파일 적용가능.

 


그림 17은 그림 16의 A, B, C 지점에서의 연직 온위 프로파일
흐리거나, 바람이 약하면, 주간의 불안정한 경계층과 야간의 안정한 경계층의 구분이 어렵다. 

강풍에다 흐린 날의 경우, 경계층은 밤낮으로 거의 변하지 않고, 대기의 조건은 중립이 된다.

 

 

그림 17. 그림 16의 A, B, C 지점에서의 연직 온위 프로파일. CBL=대류경계층(혼합층),
SBL=안정경계층(안정층), RL=잔여층

 

 

 

 

 

 

출처: 기상청

728x90
반응형
728x90
반응형

에크만 나선 (Ekman spiral)

경계층 대기는 중립상태이고, 수평온도경도 및 연직속도가 존재하지 않는다고 가정하면, 경계층 내의 이론적 풍향 및 풍속 프로파일을 유추할 수 있다. 이러한 프로파일은 1890년대 V. W. Ekman에 의한 해양 상층부에서의 흐름의 연구로 부터 처음으로 얻어 졌고, 그 후 대기 경계층에 응용되어져 왔다.

 

 

지표 바람은 등압선에 대해 45° 각도로 저기압 쪽으로 불고, 상공으로 갈수록 마찰력이 감소하여 풍속이 증가하고, 북반구(남반구)에서는 시계(반시계) 방향으로 바뀌면서 나선형이 된다. 이것을 에크만 나선이라 한다(그림). 그림의 벡터는 V1, V2, V3... 순으로 고도가 높아진다. 또한, 고도에 따라 등압선과 이루는 각이 작아지고, 마찰의 영향을 거의 받지 않는 높이에 이르러서는 등압선과 나란하게 부는 지균풍이 된다.
그러나 실제 대기에서는 이상적인 조건이 정확히 성립하는 경우는 거의 없으며, 바람구조는 매우 민감하기 때문에, 완벽한 에크만 나선은 일반적으로 존재하지 않는다.

728x90
반응형
728x90
반응형

경계층 유형 (Boundary layer types)

 

앞에서 서술한 이론적 설명은 부력이 작용하지 않는 중립 경계층의 경우에 해당한다. 

 

대기가 불안정하다면, 연직 운동의 확장 때문에 난류의 연직 발달은 강화된다. 반면에 안정한 상태에서의 난류의 연직 발달은 약화된다. 
에디(소용돌이 Vortex)들은 중립 경계층에서 w' = u'로 회전한다. 불안정한 경계층에서의 역학적 난류는 여전히 지표 부근에서는 지배적이나, 고도가 증가함에 따라 부력의 영향에 의해 w' > u'의상태가 되기 때문에, 에디는 연직으로 뻗어 나간다. 그러므로 위로부터의 운동량 플럭스는 강화되고, 저층에서의 바람은 강해진다.

 

 

그림 9. 안정도에 따른 에디 형태와 바람과 온위의 프로파일

 

안정한 경계층일 경우, 지표 부근에서는 역학적 난류가 지배적이고 에디는 회전하나, 고도가 증가함에 따라 부력이 연직 운동에 저항하여 버팀으로서 에디는 옆으로 평평하게 펴지는 형태가 된다. 즉, 의 상태가 되고, 위로부터의 운동량 플럭스가 억제되기 때문에 지표 부근의 바람은 약해진다(그림 9).

 

이러한 안정한 상태에서 억제된 운동량 플럭스는 비록 중립의 경우보다 지표 부근의 바람이 더 약하다 할지라도 하층에서의 운동량 손실이 없는 만큼 고도별 바람은 더 강하다는 것을 의미한다. 불안정한 상태에서 운동량은
경계층 내에서 더 균등하게 분산된다. 그 결과, 고도별 바람은 중립의 경우 보다 더 약하고, 지표 부근의 바람은 더 강하다. 이러한 연직 변화량의 증가는 경계층을 더 깊게 하고, 반면에 안정한 프로파일은 경계층 깊이를 제한
한다(그림 10, 그림 11).

그림 10. 그림 9의 윈드 프로파일들을 합친 경우 (출처: Met Office)

그림 11. 그림 10의 로그 프로파일 형태 (출처: Met Office)

 

이론적 대수법칙 프로파일로 부터의 이러한 시도들은 식 (11.14)가 단지
중립 상태의 경계층 깊이 전체에 걸쳐서 유효하다는 것을 의미한다. 또한,
역학적 힘이 부력보다 지배적이고, 에디들이 회전하는 몇 미터 안 되는 최
하층에서는 여전히 유효하다.

 

 

역학적 vs. 부력 메커니즘 (Mechanical vs. Buoyancy mechanisms)

비중립 상태일 경우, 경계층에서의 난류 발생에 있어서 역학적 메커니즘 대 부력 메커니즘의 상대적 중요성은 Monin-obukhov 안정도 길이(L), 시어(shear) 대 부력의 비율로 나타내어진다.

고도 z를 고려하면, z < L 의 경우는 시어가 난류 형성에 지배적이고, 반면에 z > L 의 경우는 부력이 지배적이다. 

전형적으로, 대류가 활발한 주간에는 이 약 50m이고, 그 아래에서는 시어가 지배적이다. 매우 안정적인 야간에는 이 약 10m이다.

 

 

굴뚝 배출 연기 형태 (Smoke plumes)

1. 중립상태

중립 상태의 유리한 조건은 강한 바람과 흐린 하늘이다. 그러한 상황에서,
지표는 열 에너지원으로 작용하지 않고, 공기는 가열되지 않는다. 기온감율
은 단열감율이고, 연직 변위하는 공기 덩어리에 부력이 작용하지 않는다.
그러므로 이러한 중립상태에서의 굴뚝에서 배출되는 연기는 같은 수평과
연직 비율로 순풍 방향으로 퍼져 나가며, 그림 12와 같은 원추형
(Coning)을 나타낸다.

 

그림 12. 중립상태에서의 원추형(coning) 굴뚝 연기

 

 

2. 불안정 상태

불안정한 경계층은 약한 바람과 햇빛이 있는 주간에 전형적으로 나타난다.
지표는 데워지고, 그 열은 하층 대기로 이동한다. 이것은 온도 상승과 자유
대류혼합을 일으키고, 불안정한 기온감율을 야기한다. 또한, 따뜻한 바다위
에서 부는 차가운 공기도 불안정한 경계층을 발생시킨다. 이 두 경우에, 강
한 바람이 불면 역학적 난류가 증가되고 연직교환을 위한 자유 대류가 덜
지배적이기 때문에 경계층이 중립적으로 되어 간다. 매우 불안정한 대기에
서, 굴뚝에서 배출되는 연기 형태는 그림 13과 같은 큰 대류성 에디들에
대응하는 환상형(Looping) 패턴을 보인다.

 

그림 13. 불안정 상태에서의 환상형 (looping) 굴뚝 연기

3. 고요한 상태 

고요한(Calm) 야간의 육상에서 발달하는 경계층은 안정 상태이다. 지표면
은 열을 손실하고, 대기 최하층부는 차가워진다. 이로 인하여 역학적인 난
류를 억제하는 안정적인 기온감율이 나타난다. 이러한 안정적인 상태에서
적당히 거칠은 지표일 경우의 10m 바람은 일반적으로 경도풍(Gradient
Wind)의 25%정도 이고, 중립 상태에서는 50%, 불안정 상태에서는 70%정

도 이다. 또한, 불안정 경계층의 경우에 언급했듯이, 바람 강도의 증가는 경
계층을 더 중립적으로 만든다. 이때, 혼합에 의하여 차가운 공기는 위로 보
내지고, 위에 있던 따뜻한 공기는 아래로 내려온다. 대기가 안정한 상태일
때, 굴뚝에서 배출되는 연기는 순풍 방향으로 수평하게 퍼져 나가지만, 연
직으로는 퍼지지 않는다. 그러므로 연기형태는 그림 14와 같이 부채형
이다.

 

그림 14. 안정 상태에서의 부채형(fanning) 굴뚝 연기. 삽입된 그림은 원추형과 부채형을 위에서 봤을 때 옆으로 퍼지는 형태를 나타냄.

728x90
반응형
728x90
반응형

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

자료 출처: 기상청

728x90
반응형
728x90
반응형

경계층의 정의

경계층은 지면의 영향에 가장 민감하게 반응하는 대기층

인간을 포함하는 동식물이 생존하는 매우 중요한 영역

대부분의 자연현상이 이곳에서 발생

경계층의 높이는 지표로부터 약 100m~1km 정도

 

지표면의 열과 수분은 경계층으로 공급되고, 이것은 궁극적으로 기상 시스템의 에너지원이 되는 것과 동시에 공기의 운동에 표면 마찰력이 영향을 미치는데, 이러한 영향은 운동량을 감소시킨다.

 

경계층의 상태와 구조는 습도,온도, 바람의 변화에 의존.

 

시간(1-hr) 또는 그 보다 더 작은 시간 규모(time-scale)에서, 지표 강제력에 반응

일(1-day) 또는 그보다 더 긴 시간 규모에서, 대류권 전체는 지표로부터의 열과 수분에 영향을 받는다.

 

 

경계층 기상학에서 수평 풍속 와 연직 풍속 는 매우 중요한 요소.

(1)

 

A는 풍속과 지표 상태에 의존하는 상수.

 

이 식을 적분하면,

(2)

 

B 는 적분 상수. u(z)는 z 높이에서의 수평 풍속.

 

식 (2)의 의미: 경계층에서의 이상적인 (ideal한) 흐름은 대수(로그)함수의 경향을 보인다

 

 

아래 그림은 균일 지표 상에서의 윈드 프로파일 

출처: Met Office

그림 1. 균일 지표 상에서 윈드 프로파일

 

마찰력으로 인해 경계층 내에서 풍속은 고도에 따라 증가.

저층의 풍속은 고도에 따라 빠르게 증가, 고층에서의 풍속은 느리게 증가.

마찰력은 저기압을 향해 부는 바람을 편향시키고 저감시키는 이중의 효과를 가짐.

 

 

경계층 영역

1. 난류 경계층

층류경계층 위에 존재하는 난류 혼합층

 

2. 층류 경계층 

지표에 직접 접한 영역은 층류경계층으로, 이곳에서의 흐름은 난류가 없고, 층류이며, 유선들은 서로 평행하다. 층류경계층은 지표에 밀착되어 있어, 지표와 난류경계층 사이에서 완충역할을 한다

출처: Met Office

그림 2. 난류경계층과 층류경계층

 

 

728x90
반응형
728x90
반응형

전단(Shear)

전단 (자르다, 큰 가위, shear) = 층밀림.

물체의 어떤 단면에 평행으로 서로 반대방향인 한 쌍의 힘을 작용시키면 물체가 그 면을 따라 미끄러져서 절단되는 것을 전단 (또는 층밀리기)라고 한다

  • 쉽게 말해 가위로 종이를 자를 때, 가위가 종이에 작용하는 힘.

전단력에 의해서 물체 내부의 단면에 생기는 내력(內力)을 전단응력(剪斷應力) 이라고 하며, 단위면적당 힘으로 표시된다.

 

전단변형(Shear Strain)

층밀림 변형: 원래 직각이었던 육면체 요소가 변형되어, 내부 각도의 변화 초래

응력(stress)

물체에 외력이 작용할 때, 그 힘에 저항하여 물체의 형태를 유지하려는 내력.

하중()의 종류에 따라, 전단응력(剪斷應力), 인장응력(장력), 압축응력으로 분류.

  • 전단응력: 단면에 평행인 응력(접선 성분)으로 접선응력 (또는 수평응력)
  • 인장응력, 압축응력:  단면에 수직인 응력(법선 성분)으로 수직응력 (또는 법선응력)

응력의 세기 = 단위면적당의 힘  (σ=p/A)

  •  σ은 응력, p는 외력, A는 단면적.

일반적으로, 물체내의 동일점에서의 응력이라도 면의 방향에 따라 그 종류나 세기가 다르다.

 

 

전단응력(shear stress) = 층밀림 응력=수평응력

전단력으로 발생하는 응력

단위면적 당 수평력

힘이 면에 접선방향으로 평행하게 작용할 때 면적에 작용하는 힘/면적 비 (N/㎡)

 

(전단 응력) = (접선방향 힘) ÷ (면적)

  • 고체역학: (전단 응력) = (전단 계수) x (변형)    :  고체는 전단응력에 저항함, 변형량(Strain)에 비례함
  • 유체역학: (전단 응력) = (점성 계수) x (변형률) :  유체는 전단응력에 연속적으로 변형됨. 변형율(strain rate)에 비례함

전단응력이 작용하게 되면, 유체의 변형이 생기므로 전단변형률(shear strain)을 갖는다 (아래 그림)

어떤 유체의 상단에 전단응력이 계속 작용함에 따라 전단변형률도 커진다.

 

전단응력과 전단변형률이 정비례하면 (즉, 응력과 응변율 사이가 직선관계), ‘뉴턴유체(Newtonian fluids), 나머지는 non-Newtonian fluids라 정의한다.

 

γ (gamma) : 전단변형률

τ (tau) : 전단응력

 

속도구배(velocity profile)

속도 usurface로부터의 거리 y에 따라 증가하지만, 증가율은 거리에 따라 감소

전단율은 du/dy로 정의됨.

 
 

운동량 (모멘텀) 플럭스 

전단응력은 운동량 플럭스로 해석할 있음. (단위면적당 힘)

 

움직이는 유체는 그 보다 빨리 움직이는 유체층으로부터 운동량을 전달 받음

흐름 방향에 수직인 방향으로의 운동량 플럭스는 속도 구배에 비례하며, 비례 상수는 유체 점도에 해당                    

  τ = μ du/dy

속도구배는 운동량 전달의 구동력(driving force)

 

 

 

 

대기물리에서의 모멘텀

모멘텀 뉴턴 법칙에서 가장 기본적인 개념. 정의: 질량을 가진 물체가 속도를 가지고 운동하는 방향과 크기의 곱 p(모멘텀) = mv 뉴턴 제 2법칙 = 힘과 모멘텀의 관계 질량이 크면? 속도가 크면? 일

aeir.tistory.com

뉴턴유체

응력과 변형률의 관계가 선형적인 관계이며, 그 관계 곡선이 원점을 지나는 유체
그 비례상수는 점성계수 (viscosity coefficient) .

τ = μ du/dx

  • τ: 유체에 작용하는 전단응력(shear stress)
  • μ: 유체의 점성계수
  • du/dx: 전단력에 수직한 방향의 속도의 기울기

뉴턴 유체에서 점성계수는 가해지는 힘에 의해 변하지 않으며, 오직 압력과 온도의 함수이다.

 
 
 

Stress (응력)의 개념

Stress: 물체에 변형을 유발하려고 하는 단위 면적당 힘 (F/A)

  1. Pressure
  2. Reynolds stress
  3. Viscous shear stress

Turbulent flux ~> covariace

Momentum flux ~> stress

 

 

1. 압력 (Pressure)

정지해 있는 유체에 가해지는 stress

스칼라 단위.

압축과 팽창에 의해서 변형된다. 

방향에 독립. 즉 모든 방향에 대해서 동일하게 작용한다. 즉, 등방성 (isotropic)

 
 

 

2. 레이놀즈 응력 (Reynolds stress)

난류 운동에서만 관련된 응력

레이놀즈 sterss는 모멘텀 플럭스임. 유속이 다른 공기가 어떤 물체의 면을 가로질러 수송될 때, 그 유속 차이의 비로서 물체의 변형을 일으킴 (Fig. e)

레이놀즈 응력과 모멘텀 플럭스는 흐름(flow 또는 velocity)의 특성이지, 정적인 (static) 유체(fluid) 자체의 특성은 아님. 

 
 

 

(용어)

플럭스: 단위면적당 단위시간당 유량
모멘텀 = m v (kg m/s)
모멘텀 플럭스 = (kg m/s)/(m^2)/(s) => Kinematic flux => N/m^2 => F/A(stress)
밀도로 나누면 (m s-1) (m s-1), 즉, u'w' => Normal flux

* Reynolds stress = momentum flux

 

3. 점성 응력 (Viscous Shear Stress)

점성 응력은 유체 내 층밀림 즉, 전단 운동(shearing motion)이 존재할 때만 작용한다. 난류든 층류든 상관없음.

유체가 운동을 하면, 유체 내 분자들은 주변 분자들에게 운동과 같은 방향으로 끌림(drag)력을 작용하게 되어 변형을 일으킨다 (Fig. j)

점성력(viscous force)는 육면체의 어떤 면에서든 3방향으로도 작용할 수 있다 (Fig. f) 즉, 한면에 대해서 3방향으로 작용한다. 따라서 9개의 components를 가지는 tensor 이다. 대칭 요소를 제외하면 Reynolds'  stress와 같이 6개 성분만 남는다. 

 

 

 

 

 

 

 

마찰 속도 (Friction velocity)

 

 

 

728x90
반응형
728x90
반응형

 

  “When I meet God, I am going to ask him two questions: why relativity and why turbulence? I really believe that he will have and answer for the first.”

- 양자역학의 아버지 베르너 하이젠베르크 (Werner Heisenberg)

 

그 만큼 난류해석이 어렵고 무질서 하다는 의미.

주변에서 가장 흔히 볼 수 있는 난류의 예 담배연기 - 층류에서 어느 순간 갑자기 난류로 바뀜 (사실 유체역학적 정의로서 담배연기 흐름은 난류가 아님.)

상생활의 대부분은 난류 > 85% 정도?

 

유체역학 관련 용어 정리 

유체의 정의

액체 또는 기체상의 물질

흐르는 물질에 아주 작은 전단력이라도 작용하기만 하면 연속적으로 영구변형이 일어나 흐르는 물질

 

유체와 고체의 차이점 (전단응력이 작용할때)

고체: 탄성 한계 내의 전단응력이 작용하는 경우 전단력을 제거하면 원래의 형태로 복원됨. 
유체: 전단력이 작용하기만 하면 영구변형되어 흐르고, 전단력을 제거해도 원래의 형태로 되돌아 오지 않는다.

 

유체와 고체의 공통점(압축응력이 작용할때)

유체도 고체와 마찬가지로 탄성을 가짐.

압축응력을 가하면 부피가 감소하고, 압축응력을 제거하면 원래의 형태로 되돌아 온다.

 

유체역학 용어정리 - 응력,전단응력,레이놀즈응력,점성응력

전단(Shear) 전단 (자르다, 큰 가위, shear) = 층밀림. 물체의 어떤 단면에 평행으로 서로 반대방향인 한 쌍의 힘을 작용시키면 물체가 그 면을 따라 미끄러져서 절단되는 것을 전단 (또는 층밀리기)

aeir.tistory.com

 

뉴턴유체

전단응력과 전단변형률의 관계가 선형적인 관계, 그 관계 곡선이 원점을 지나는 유체.

그 비례 상수가 바로 점성 계수(viscosity coefficient)

https://ko.wikipedia.org/wiki/%EB%89%B4%ED%84%B4_%EC%9C%A0%EC%B2%B4

 

뉴턴 유체 - 위키백과, 우리 모두의 백과사전

 

ko.wikipedia.org

비뉴턴유체

https://ko.wikipedia.org/wiki/%EB%B9%84%EB%89%B4%ED%84%B4_%EC%9C%A0%EC%B2%B4

 

비뉴턴 유체 - 위키백과, 우리 모두의 백과사전

비뉴턴 유체(non-Newtonian fluid)는 뉴턴의 점성 법칙, 응력과 무관한 즉 일정한 점도를 따르지 않는 유체이다. 비 뉴턴 유체에서 점도는 힘이 가해지는 정도에 의해 더 액체 또는 더 고체로 변할 수

ko.wikipedia.org

 

유체역학 관련 법칙과 방정식

 

질량보존

선운동량보존

각운동량보존

열역학 1,2법칙

상태방정식

구성방정식(constitutive relation between stress and velocity gradient)

 
 

 

경계층 흐름

경계층 (boundary Layer): 고체의 경계가 유체의 흐름에 영향을 미치는 영역

Surface 에서 유속은 0.

점성흐름 (viscous flow): 경계층에서 발생하는 흐름

 

 

 

 

 

유체역학의 해석방법

Lagrangian description: 유체는 운동하는 수많은 입자로 구성된 것으로 가정 (미시적관점)

Eulerian description:  개별분자 운동은 무시하고, 연속체 (continuous medium)으로 가정 (거시적 관점), 다루기 더 편하다.

 

 

전산유체역학

유체의 특성을 분류하는 이유: 복잡한 유동에서 무시할 수 있는 변수를 제거하여 단순하게 문제를 해석, 해결하기 위함.

복잡한 유동은 컴퓨터를 이용해서 해석하는 데, 이를 전산유체 역학 (Computational Fluid Dynamics, CFD)라고 함.

 

Naiver-Stokes equation (2계 비선형 편미분방정식): 유체역학에서 베르누이 방정식과 함께 가장 유명한 식.

이 식은 해석해를 구할 수 없기에, 수치해석으로 근사해를 구함.

 

CFD는 풍동실험보다 비용면에서 저렴하나, 오류/오차가 발생하기 쉽다. 

 

 

728x90
반응형
728x90
반응형

 

 

 

 

 

 

 

https://aeir.tistory.com/entry/%ED%85%90%EC%84%9C-%EC%9A%94%EC%95%BD-%ED%91%9C%EA%B8%B0%EB%B2%95-summation-notation

 

728x90
반응형
728x90
반응형

평균의 여러가지 형태

시간 평균(time average) 

: instantaneous variable

sampling time

      안정한 평균을 얻고 흐름에 기여하는 큰 에디의 효과를 포함시킬 만큼 충분히 길어야 함

      반면 흐름내에 나타나는 경향을 희석할 정도로 너무 길어서는 안됨

      고정된 측기로부터 관측된 자료분석에 주로 사용됨

       미기상학적 관측에서 주로 사용되는 최적의 평균 시간 10^3~10^4초이다.

 

공간 평균(spatial average)

비행레이더 및 소다관측 분석에 사용됨

앙상블 평균 (Ensemble average)

동일한 조건으로부터 반복적으로 수행된 실험의 결과들에 대한 산술 평균

이론에서는 항상 사용되지만 실제에서는 거의 사용되지 않음

시간 평균=공간 평균=앙상블 평균 조건을 만족하려면, 정상상태이고 공간적으로 동질해야함 (ergodic 상태)

 

 

난류의 통계 수학적 표현 = 레이놀즈 분해법

 

레이놀즈 분해 (eynolds decomposition): 순간장(섭동장,perturbation, fluctuation)을 평균과 변동으로 분해하는 것

레이놀즈 평균

 

 

 

 

레이놀즈 섭동항

 

 

 

분산과 난류 플럭스

분산: 변동수준을 측정함

난류 강도

: 평균 풍속             

: 속도성분의 표준편차

 

 

 

상관계수 

 

공분산

전체 플럭스는 평균 수송과 난류 수송의 합으로 구성됨

 

 

 

운동량 연직 플럭스

Reynolds stress점성응력보다 훨씬 크다.

 

 

 

관련 예제

 

 

예제 - 레이놀즈 분해와 난류 강도

아래 조건의 경우, 아래 값들을 구하시오. 난류 강도 상관계수 난류운동에너지 (Turbulence Kinetic Energy) 해설:

aeir.tistory.com

 

728x90
반응형
728x90
반응형

나비아-스토크 방정식 (Navier-Stokces equations) - 평균류

뉴턴의 운동 제2법칙, 운동량 보존 법칙으로부터 유도된, 자전하는 지구 상에서의 유체의 힘의 균형을 나타내는 N-S 방정식은 아래와 같다 

아래 식 유도는 Holton 역학책 Boussinesq Approximation 에서 유도한 식. 

 

좌(1)항: 유체 요소에 가해지는 국지 가속으로 발생하는 관성력 (국지항)

우(1-3)항: 유체 요소에 가해지는 이류 가속으로 발생하는 관성력 (이류항)  

우(4)항: 유체 요소에 작용하는 기압경도력 (PGF)

우(5)항: 유체 요소에 작용하는 겉보기 힘 (코리올리 힘 또는 가속도),
우(6)항: 유체 요소에 작용하는 점성력 또는 마찰력 (점성항)

 

 

좌(1)항과 우(1-3)항을 합치면 전미분 형태로서 tendency term으로 불림

난류항은 난류 및 레이놀즈 응력항이 적용되어야 함. 

 

N-S 방정식은 이차 계수의 비선형 편미분 방정식이고, 비선형인 관성항과 점성항으로 인해서 이 방정식의 해석해를 구하는 것은 불가능. 따라서 차분을 이용한 수치해석 방법으로 근사치를 구한다. 

각 항들은 경우에 따라 아래와 같이 생략하여 해석할 수 있다.

1. 정상류 (steady flow) 인 경우, tendency term --> 0.

2. 수평적으로 균질한 지표면 상에서, 이류항 --> 0.

3. 고/저기압 가운데나 미규모 운동인 경우, PGF  --> 0.

4. 적도에서, Co.F term --> 0.

5. 점성항 무시하면, 비점성 (또는 이상적인) 유체에 대한 오일러 방정식이 .

 

728x90
반응형
728x90
반응형

728x90
반응형
728x90
반응형

신경망 구조

1. 네트워크(또는 모델)를 구성하는 층

2. 입력 데이터와 그에 대응하는 타깃

3. 손실함수: 예측과 타깃을 비교하여 모델의 예측이 기대값에 얼마나 잘 맞는지 측정하는 손실값을 만듬

4. 학습 진행방식을 결정하는 옵티마이저

 

 

 

 

모델: 

층의 네트워크

딱 맞는 네트워크 구조를 찾는 것은 과학보다 예술. 연습 필요.

>>> from keras import models

>>> from keras import layers

>>> model = model.Sequential() 

 

Sequential() 모델의 경우, 단일 입력, 단일 출력인 경우 사용

다중입력 데이터 + 여러 딥러닝 모듈 인 경우 함수형 API 사용

모델 설정 - 층 설정

입력층, 은닉층, 출력층 등의 딥러닝의 구성 단위

하나 이상의 텐서를 입력받아 하나 이상의 텐서를 출력하는 데이터 처리 모듈

가중치: 대부분의 층은 가중치를 가짐. 네트워크(모델)가 학습한 지식이 가중치에 담겨 있음. 

 

>>> model.add(layers.Dense(32, input_shape=(784,)) activation = 'relu')

첫번째 차원이 784인 2D텐서만 입력으로 받는 층을 만듬.

배치 차원인 0번째 축은 지정하지 않았기 때문에 어떤 배치 크기도 입력받을 수 있음

이 층은 첫번째 차원 크기가 32로 변환된 텐서를 출력함

즉, 이 다음 하위층은 32차원의 벡터를 입력으로 받는 하위 층으로 연결되어야 함. 

(Kerase에서는 자동으로 층 호환성을 맞춤)

>>> model.add(layers.Dense(10), activation='softmax')

input_shape을 지정하지 않아도 Kerase에서는 자동으로 앞선 층의 출력크기로 맞춰줌.

 

 

컴파일 - 손실함수와 옵티마이저: 학습 과정을 조절하는 열쇠!

>>> from keras import optimizers

>>>model.comopile(optimizer = optimizers.RMSprop(r=0.001), 

... loss='mse'

... metrics=['accuracy'])

 

손실(또는 목적)함수:

모델의 최적 매개변수(가중치, 편향) 학습에 필요한 에러 측정 함수

네트워크(망)이 예측한 결과와 데이터 세트에 명시된 실제 결과의 차이를 측정

훈련하는 동안 최소화될 값. 주어진 문제에 대한 성공 지표

 

손실함수 정의 방법: 

분류문제: 데이터 세트의 데이터 중 잘못 분류한 비율을 계산하고, 그 비율을 에러 발생 확률로 사용

회귀문제: 입력 데이터로 예측한 결과와 실제 결과 간의 차이를 계산하여 평균을 구함.

 

옵티마이저 - 손실함수 최적화

손실 함수를 기반으로 네트워크가 어떻게 업그레이드 될 지 결정. 확률적 경사 하강법 사용해서 구함. 

여러개의 출력을 만드는 신경망은 또한 여러 개(vector or tensor)의 손실함수를 가질 수 있음 (출력당 하나씩).

경사 하강법은 하나의 손실값(scalar)을 이용하기 때문에, 모든 네트워크에서 출력된 손실의 평균값을 계산.

 

신경망은 단지 손실함수를 최소화하기만 한다. 따라서, 목적 함수를 올바로 선택하지 않으면 원치않는 side effects가 커질 수 있다.

 

올바른 손실/목적함수 선택법:

1. binary_crossentropy (이항 교차 엔트로피 또는 이진 크로스엔트로피): 이진 분류 문제. 참/거짓 2개의 클래스를 분류할 때

2. categorical_crossentropy 범주형 크로스엔트로피: 여러개의 클래스 분류할 때

3. mean_squared_error 평균 제곱 오차: 회귀문제

4. mean_absolute_error 평균 절대 오차: 회귀문제

5. mean_absolute_percentage_error: 평균 절대 백분율 오차: 회귀문제

6. CTC(Connection Temporal Classification): 시퀀스 학습 문제

 

 

 

 

 

모델 실행 - 모델링 (fitting)

>>> model.fit(X, Y, epochs=100, batch_size=10)

일반적인 데이터 셋 csv 파일의 경우, 가로행(속성 또는 피쳐 feature), 세로열(샘플 또는 인스턴스instance 또는 example))로 구성됨. 


Epochs

학습 프로세서가 모든 샘플 에 대해 한 번 실행되는 것을 1epoch

epochs=100 이면, 각 샘플이 처음부터 끝까지 100번 재사용될 때가지 실행을 반복하라는 뜻. 

batch_size:

샘플을 한번에 몇개씩 처리할지 정하는 부분

batch_size=10 이면 전체 샘플 중 10개씩 끊어저 집어넣으라는 뜻.

너무 크면 학습도 저하, 너무 작으면 편차가 높아져 결과값이 불안정해 짐

따라서, 현재 시스템의 메모리가 감당할 만큼의 batch_size를 찾아 설정해 주는 게 관권. 

 

 

 

모델평가 

학습/테스트 세트로 구분하여 평가

과소적합/과적합

 

728x90
반응형
728x90
반응형

MNIST 손글씨 딥러닝 예제를 통한 신경망 구조 설명

1. 훈련/테스트 세트 구성

>>> import tensorflow as tf  

>>> from kerase.datasets import mnist
>>>  mnist = tf.keras.datasets.mnist
>>> (x_train, y_train), (x_test, y_test) = mnist.load_data()  # train / test set을 알아서 나눔
# mnist 데이터는 0~255 범위의 데이터 
# 이를 0~1 사이로 맞춰주기 위해서 255로 나눔.
# 딥러닝은 0~1 사이로 input 데이터의 범위를 해줘야.

>>> x_train, x_test = x_train / 255.0, x_test / 255.0
>>> x_train.shape

 

2. 모델 구성

Layer(층):

데이터 처리 필터 

어떤 데이터가 들어가면 더 유용한 형태로 출력됨.

즉, 주어진 문제에 더 의미 있는 표현을 입력 데이터로 부터 추출함

여러 층을 통과하면서 점진적으로 데이터를 정제함.

데이터 정체 필터(층)가 연속되어 있는 데이터 프로세싱을 위한 여과기 같다고 생각할 수 있음. 

 

>>> model = tf.keras.models.Sequential([
...  tf.keras.layers.Reshape((28, 28, 1)),
...  tf.keras.layers.Conv2D(16, 3, activation='relu'),
...  tf.keras.layers.Flatten(),
...  tf.keras.layers.Dense(128),
...  tf.keras.layers.Dense(10, activation='softmax')
... ])

 

3. 컴파일 (compile)

손실함수 (loss function):

신경망의 성능을 측정하는 방법

모델(네트워크)이 옳은 방향으로 학습될 수 있도록 해줌. 

 

옵티마이저(optimizer):

입력 데이터와 손실 함수를 기반으로 네트워크를 업데이트하는 메커니즘

 

모니터링 지표

정확도 등

>>> model.compile(optimizer='adam',
...              loss='sparse_categorical_crossentropy',
...              metrics=['accuracy'])

 

4. 학습

>>> model.fit(x_train, y_train, epochs=5)

 

5. 모델 평가

>>> test_loss, test_acc = model.evaluate(x_test, y_test)
>>> print('테스트 정확도:', test_acc)

 

 

 

 

728x90
반응형
728x90
반응형

구글 플레이그라운드에 접속

https://playground.tensorflow.org 

 

Tensorflow — Neural Network Playground

Tinker with a real neural network right here in your browser.

playground.tensorflow.org

 

1. 문제유형 선택 (먼저, 선형 분리되는 작업 선택)

2. 훈련/테스트 데이터 비율 설정

3. 입력 특징 선택

4. 학습율 설정: 학습속도 결정

5. 활성화함수 선택

6. 학습시작

 

7.  선형분리 안되는 작업에 은닉층 추가해서 실행해서 분류 도표 차이 보기

 

 

 

 

 

728x90
반응형
728x90
반응형

파이썬 리스트는 활용도가 높지만, 빅데이터 처리에는 충분하지 않다. 

파이썬의 리스트에서는 데이터가 비연속적인 위치에 저당되므로 대량의 데이터 처라에 불리함. 

C언어 스타일의 2차원 배열은 데이터들이 연속적인 위치에 저장되어 효율적으로 처리할 수 있음. 왜냐하면 연속적으로 데이터가 저장되어 있어야 다음 데이터를 찾기 쉽기 때문. 

 

NumPy(Numerical Python):

과학/공학 분야에서 사용되는 파이썬 라이브러리

넘파이 API는 Pandas, SciPy, Matplotbli, scikit-learn 등의ㅐ 패키지에서 사용됨. 

훈련샘플은 2차원, 3차원 다차원 행렬안에 저장됨. 

행렬에서 삭제, 분리, 추가 등의 조작은 반드시 넘파이를 사용

 

넘파이 불러오기

>>> import numpy as np

배열 생성하기

배열은 넘파이의 핵심 데이터 구조

배열의 요소는 모두 동일한 타입

배열의 랭크(rank)는 차원 수

배열의 형상(shape)은 각 차원 및 항목 수

** 1차원 배열은 하나의 축만 가지고 있고, 2차원 배열은 2개의 축을 가진다.

배열생성은 array 함수 사용

a = np.array([1,2,3])  ## 1차원

#  a: 배열 객체

#  np.arry: 생성자 함수 

#  ([1,2,3]) : 파이썬 리스트

 

>>> a

array([1,2,3])

>>> a[0]

1

>>> b = np.array([[1,2,3],[4,5,6],[7,8,9]])

>>> b

arrary([[1,2,3],

         [4,5,6],

         [7,8,9]])

>>> b[0][2]

3

 

배열의 속성

넘파이 클래스 ndarray의 속성들

ndim : 축의 갯수, 2차원이면 ndim=2

shape: 배열의 형상, 정수 튜플로 나나냄. n행, m열의 경 (n,m)

size: 배열 내 요소들의 총 갯수

dtype: 배열 요소의 자료형,. numpy.int32, numpy.int16, numpy.float64 등

itemsize: 배열을 이루는 요소의 크기. 단위는 바이트. float64는 itemsize=8

data: 실제 데이터가 저장되는 메모리 블럭 주소

 

넘파이 배열 자료형 지정:

>>> dtype = np.int32  또는 dtype="np.int32"

 

>>> a=np.array([[0,1,2],

                      [3,4,5],

                      [6,7,8]])

>>> a.shape       # 배열의 형상

(3,3)

>>> a.ndim        # 배열의 차원 수

2

>>> a.dtype       # 요소의 자료형

dtype('int32')

>>> a.itemsize     # 요소 한개의 크기

8

>>> a.size   # 전체 요소 수 

9

 

1 또는 0으로 채워진 배열 생성 (주로 배열 초기화에 사용됨)

>>> np.zeros((3,4))
array([[0., 0., 0., 0.],
       [0., 0., 0., 0.],
       [0., 0., 0., 0.]])
>>> np.ones((3,4))
array([[1., 1., 1., 1.],
       [1., 1., 1., 1.],
       [1., 1., 1., 1.]])
>>> np.ones((3,4), dtype=np.int32)
array([[1, 1, 1, 1],
       [1, 1, 1, 1],
       [1, 1, 1, 1]])
>>> np.eye(3)
array([[1., 0., 0.],
       [0., 1., 0.],
       [0., 0., 1.]])

 

>>> x = np.ones(5, dtype=np.int64)
>>> x
array([1, 1, 1, 1, 1], dtype=int64)

 

 

연속되는 값으로 배열 생성하기 

np.arange(start, stop, step)

>>> x = np.ones(5, dtype=np.int64)
>>> x
array([1, 1, 1, 1, 1], dtype=int64)
>>> np.arrange(5)
AttributeError: module 'numpy' has no attribute 'arrange'
>>> np.arange(5)
array([0, 1, 2, 3, 4])
>>> np.arange(1,6)
array([1, 2, 3, 4, 5])
>>> np.arange(1,6)
array([1, 2, 3, 4, 5])
>>> np.arange(1,10,2)
array([1, 3, 5, 7, 9])

 

 

np.linspace(start, stop, num)

start: 시작값

stop: 종료값

num: 갯수

>>> np.linspace(0,10,100)
array([ 0.        ,  0.1010101 ,  0.2020202 ,  0.3030303 ,  0.4040404 ,
        0.50505051,  0.60606061,  0.70707071,  0.80808081,  0.90909091,
        1.01010101,  1.11111111,  1.21212121,  1.31313131,  1.41414141,
        1.51515152,  1.61616162,  1.71717172,  1.81818182,  1.91919192,
        2.02020202,  2.12121212,  2.22222222,  2.32323232,  2.42424242,
        2.52525253,  2.62626263,  2.72727273,  2.82828283,  2.92929293,
        3.03030303,  3.13131313,  3.23232323,  3.33333333,  3.43434343,
        3.53535354,  3.63636364,  3.73737374,  3.83838384,  3.93939394,
        4.04040404,  4.14141414,  4.24242424,  4.34343434,  4.44444444,
        4.54545455,  4.64646465,  4.74747475,  4.84848485,  4.94949495,
        5.05050505,  5.15151515,  5.25252525,  5.35353535,  5.45454545,
        5.55555556,  5.65656566,  5.75757576,  5.85858586,  5.95959596,
        6.06060606,  6.16161616,  6.26262626,  6.36363636,  6.46464646,
        6.56565657,  6.66666667,  6.76767677,  6.86868687,  6.96969697,
        7.07070707,  7.17171717,  7.27272727,  7.37373737,  7.47474747,
        7.57575758,  7.67676768,  7.77777778,  7.87878788,  7.97979798,
        8.08080808,  8.18181818,  8.28282828,  8.38383838,  8.48484848,
        8.58585859,  8.68686869,  8.78787879,  8.88888889,  8.98989899,
        9.09090909,  9.19191919,  9.29292929,  9.39393939,  9.49494949,
        9.5959596 ,  9.6969697 ,  9.7979798 ,  9.8989899 , 10.        ])

 

배열 정렬

>>> arr = np.array([2,1,5,3,7,4,6,8])
>>> np.sort(arr)

배열 합치기

array([1, 2, 3, 4, 5, 6, 7, 8])
>>> x=np.array([[1,2],[3,4]])
>>> y=np.array([[5,6],[7,8]])
>>> np.concatenate((x,y), axis=1)
array([[1, 2, 5, 6],
       [3, 4, 7, 8]])

2개 배열 수직으로 쌓기

np.concatenate(), vstack(), hstack() 사용해도 됨.

>>> np.vstack((x,y))
array([[1, 2],
       [3, 4],
       [5, 6],
       [7, 8]])
>>> np.vstack(x,y)
TypeError: _vhstack_dispatcher() takes 1 positional argument but 2 were given
>>> np.hstack((x,y))
array([[1, 2, 5, 6],
       [3, 4, 7, 8]])

 

배열 형태 변환

일반적으로 딥러닝은 2차원 입력이어야 한다.

따라서, 1차원 자료를 2차원으로 변환해야 

reshape(): 행렬 데이터 갯수는 그대로, 차원만 변경함. 

new_array = old_array.reshape((2,3))

new_array: 새로운 배열

old_array: 원래 배열

(2,3): 새 배열 형상

 


>>> a = np.arange(12)
>>> a.shape
(12,)
>>> a.reshape(3,4)   # 3x4 행렬로 변환
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11]])
>>> a.reshape(6,-1)    #인수가 -1 인 경우, 데이터 갯수에 맞춰서 자동으로 배열형태 결정함. 
array([[ 0,  1],
       [ 2,  3],
       [ 4,  5],
       [ 6,  7],
       [ 8,  9],
       [10, 11]])

 

다차원 배열 평탄화

다차원 배열 --> 1차원으로 

flatten() 사용 (ravel() 사용하면 view 만 변경되므로 주의.)


>>> y = np.array([[1,2,3,4], [5,6,7,8], [9,10,11,12]])
>>> y.flatten()
array([ 1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12])


>>> a = y.flatten()
>>> a[0]= 99
>>> print(a)
[99  2  3  4  5  6  7  8  9 10 11 12]
>>> print(y)
[[ 1  2  3  4]
 [ 5  6  7  8]
 [ 9 10 11 12]]

 

배열 분할(슬라이싱)

넘파이 배열을 자르는 메소드는 split()

세로로 자르려면 axis=1,가로면 axis=0

 

>>> array= np.arange(30).reshape(-1,10)
>>> array
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, 27, 28, 29]])
>>> array= np.arange(30).reshape(-1,10)
>>> array
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, 27, 28, 29]])
>>> arr1,arr2 = np.split(array, [3], axis=1)
>>> arr1
array([[ 0,  1,  2],
       [10, 11, 12],
       [20, 21, 22]])
>>> arr2
array([[ 3,  4,  5,  6,  7,  8,  9],
       [13, 14, 15, 16, 17, 18, 19],
       [23, 24, 25, 26, 27, 28, 29]])

 

 

배열에 새로운 축 추가하기

np.newaxis, np.expand_dims를 사용하여 기존 배열의 크기를 증가시킬 수 있음

np.newaxis를 사용할 때 마다 차원이 1차원 증가

 

>>> a = np.array([1,2,3,4,5,6])
>>> a.shape
(6,)
>>> a1=a[np.newaxis, :]
>>> a1.shape
(1, 6)
>>> a2=a[:, np.newaxis]

array([[1],
       [2],
       [3],
       [4],
       [5],
       [6]])
>>> a2.shape
(6, 1)

np.expand_dims() 를 사용하여 지정된 위치에 새 축을 삽입하여 배열 확장 가능

>>> b = np.expand_dims(a, axis=1)
>>> b
array([[1],
       [2],
       [3],
       [4],
       [5],
       [6]])
>>> b.shape
(6, 1)

 

인덱싱과 슬라이싱

>>> ages = np.array([18,19, 25, 30, 28])
>>> ages[1:3]    # index 1~2
array([19, 25])
>>> ages[:2]      # index 0~1
array([18, 19])
>>> y = ages > 20     # 논리 인덱싱
>>> y 
array([False, False,  True,  True,  True])

>>> ages[ages > 20]  ## 20 이상을 뽑아낼 때

array([25,30,28])

 

2차원 배열의 인덱싱

2차원 배열 인덱싱/슬라이싱은 가장 많이 사용됨. 연습 필요. 

>>> a = np.array([[1,2,3],[4,5,6],[7,8,9]])
>>> a[0,2]
3
>>> a[0][2]
3
>>> 

>>> a[0,0] = 12
>>> a
array([[12,  2,  3],
       [ 4,  5,  6],
       [ 7,  8,  9]])

 

 

2차원 배열 슬라이싱

>>> a[0:2, 1:3]
array([[2, 3],
       [5, 6]])

>>> a[0]

array([1,2,3])

>> a[1,1:3]

array([5,6])

 

얕은 복사와 깊은 복사

넘파이 함수, 인덱싱, 슬라이싱 연산자는 데이터 복사 필요없이 view 만 변환

view에서 데이터 수정하면 원본 배열도 수정됨. 

 

얕은 복사 예 ... b가 변하면 원본 a도 변한다.

>>> a = np.array([[1,2,3,4], [5,6,7,8], [9,10,11,12]])
>>> b = a[0,:]
>>> b
array([1, 2, 3, 4])
>>> b[0] = 99

>>> b
array([99, 2, 3, 4])
>>> a
array([[99,  2,  3,  4],
       [ 5,  6,  7,  8],
       [ 9, 10, 11, 12]])

 

깊은 복사 예  ... b2는 변해도 원본 a는 변하지 않는다.

>>> b2 = a.copy()
>>> b2
array([[ 1,  2,  3,  4],
       [ 5,  6,  7,  8],
       [ 9, 10, 11, 12]])
>>> b2[0] = 88
>>> b2
array([[88, 88, 88, 88],
       [ 5,  6,  7,  8],
       [ 9, 10, 11, 12]])
>>> a
array([[ 1,  2,  3,  4],
       [ 5,  6,  7,  8],
       [ 9, 10, 11, 12]])

 

 

기본 배열 연산

>>> arr1 = np.array([[1,2],[3,4],[5,6]])
>>> arr2 = np.array([[1,1],[1,1],[1,1]])
>>> results = arr1 + arr2
>>> results
array([[2, 3],
       [4, 5],
       [6, 7]])
>>> arr1**2
array([[ 1,  4],
       [ 9, 16],
       [25, 36]], dtype=int32)

>>> arr1.sum()

21

>>> arr1.min()

1

>>> arr1.max()

6

>>> arr1.mean(axis=0)   # 특정 열에서의 모든 행의 값을 사용해서 계산

array([3., 4.,])

>>> arr1.mean(axis=1)   # 특정 열에서의 모든 열의 값을 사용해서 계산

array([1.5, 3.5, 5.5]

>>> print(arr1.T)   # 전치행렬

 

>>> arr1*arr2
array([[1, 2],
       [3, 4],
       [5, 6]])

 

>>> arr1 = np.array([[1,2,3],[4,5,6],[7,8,9]])
>>> arr2 = np.array([[2,2],[2,2],[2,2]])
>>> arr1 @ arr2     ## 내적 (1번째 열, 2번째 행 갯수 일치해야)
array([[12, 12],
       [30, 30],
       [48, 48]])

 

 

난수 생성

>>> np.random.seed(100) # 이후 아래 명령어 수행해야

>>>np.radom.rand(5)

>>> np.radom.rand(5,3)

>>> np.radom.randit(1,7,size=10)

 

>> > np.random.randn(5)  ## 정규분포 난수 생성

 a  = np.random.normal(loc=0.0, scale=1.0, size=None)

loc: 평균

scale: 표준편차

size: 배열의 차원

>> mu, sigma = 0, 0.1

>> np.random.normal(mu, sigma, 5)

array([-0.17497655,  0.03426804,  0.11530358, -0.0252436 ,  0.09813208])

 

 

 

고유 항목과 갯수 구하기 

>>> a = np.array([11,11,12,14,13, 15, 16, 17, 12, 13, 11, 14, 18, 19, 20])
>>> unique_values = np.unique(a)
>>> unique_values
array([11, 12, 13, 14, 15, 16, 17, 18, 19, 20])
>>> uniuqe_values, indices_list = np.unique(a, return_index=True)

>>> print(indices_list)

[ 0 2 3 4 5 6 7 8 12 13 14]
>>> unique_values, occurrence_count = np.unique(a, return_counts=True)
>>> print(occurrence_count)
[3 2 2 2 1 1 1 1 1 1]

 

 

파일 입출력 (.csv)

Pandas 를 사용

read_csv()를 호출하면 반환되는 객체의 values에 넘파이배열로 저장됨. 

>>> import numpy as np

>>> import pandas as pd

>>> x= pd.read_csv('example.csv',  header=0).values  

>>> print(x)

 

>>> x= pd.read_csv('example.csv',  usecols=['col1','col2']).values  

>>> print(x)

 

>>> df = pd.DataFrame(a)

>>> print(df)

>> df.to_csv('out.csv')

 

 

 

728x90
반응형
728x90
반응형

epochs=5

batch_size=5
np.random.seed(1)

 

 

epochs=5

batch_size=5
np.random.seed(7820)

 

gap-filling with mean values.

epochs=20
batch_size=5
np.random.seed(7820)

 

from keras.models import Sequential
from keras.layers import Dense
classifier = Sequential()
classifier.add(Dense(units = 13, activation = 'relu'))
classifier.add(Dense(units = 1, activation = 'sigmoid'))
classifier.compile(optimizer = 'adam', loss = 'binary_crossentropy', metrics = ['accuracy'])

728x90
반응형
728x90
반응형

728x90
반응형

+ Recent posts