Skip to content

Commit 5b082b5

Browse files
committed
Update arrays_operation.ipynb
1 parent 5f4fc85 commit 5b082b5

1 file changed

Lines changed: 52 additions & 54 deletions

File tree

arrays_operation.ipynb

Lines changed: 52 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -3719,7 +3719,7 @@
37193719
"cell_type": "markdown",
37203720
"metadata": {},
37213721
"source": [
3722-
"### 브로드캐스팅과 항목 대체"
3722+
"### 슬라이싱과 브로드캐스팅"
37233723
]
37243724
},
37253725
{
@@ -4471,7 +4471,7 @@
44714471
}
44724472
},
44734473
"source": [
4474-
"(3) 피어슨 데이터셋(`pearson`)의 단위는 센티미터(cm)로 되어 있다. 단위를 인치(inch)로 변환하기 위해 전체 데이터에 $1/2.54$를 곱한 후, 소수점 첫째 자리까지만 남기려고 한다. 또한, 데이터 수집 과정의 오류로 인해 처음 5개 가족(인덱스 0~4)의 기록이 완전히 삭제되어 모두 0으로 초기화해야 하는 상황이라고 가정하자.\n",
4474+
"(3) 피어슨 데이터셋(`pearson`)의 단위는 센티미터(cm)로 되어 있다. 단위를 인치(inch)로 변환하기 위해 전체 데이터에 $1/2.54$를 곱한 후, 소수점 첫째 자리까지만 남기려고 한다. 또한, 데이터 수집 과정의 오류로 인해 처음 5개 가족(인덱스 0~4)의 기록에 문제가 있어 모두 0으로 초기화해야 하는 상황이라고 가정한다.\n",
44754475
"\n",
44764476
"가. 모든 키 데이터를 인치 단위로 변환하여 새로운 어레이 `pearson_inch`에 저장하고, 이 어레이의 모든 값을 `np.round()` 함수를 이용해 소수점 첫째 자리까지 반올림하라."
44774477
]
@@ -4528,7 +4528,9 @@
45284528
"\n",
45294529
"어레이를 2.54로 나누면 브로드캐스팅이 작동하여 모든 항목이 동시에 계산된다. \n",
45304530
"이후 `np.round(어레이, 1)`을 통해 모든 요소를 소수점 1자리까지 쉽게\n",
4531-
"계산할 수 있다."
4531+
"계산할 수 있다.\n",
4532+
"`np.round()` 함수는 다른 어레이 연산자처럼 항목별로 작동한다.\n",
4533+
"즉, 어레이에 포함된 각각의 항목에 대해 `round()` 함수가 적용된다."
45324534
]
45334535
},
45344536
{
@@ -4594,7 +4596,7 @@
45944596
"metadata": {},
45954597
"source": [
45964598
"부울 인덱싱<font size='2'>boolean indexing</font>은\n",
4597-
"지금까지 소개한 인덱싱/슬라이싱 기법이 처리하지 못하는 기능을 제공한다."
4599+
"`True/False`로 구성된 부울 어레이를 인덱스로 사용하여 조건에 맞는 항목만 선택하거나 수정하는 기법으로, 일반 인덱싱/슬라이싱으로는 처리하기 어려운 조건부 추출이 가능하다."
45984600
]
45994601
},
46004602
{
@@ -4620,56 +4622,56 @@
46204622
},
46214623
{
46224624
"cell_type": "code",
4623-
"execution_count": null,
4625+
"execution_count": 3,
46244626
"metadata": {},
46254627
"outputs": [
46264628
{
46274629
"data": {
46284630
"text/plain": [
4629-
"array(['Bob', 'Joe', 'Will', 'Bob', 'Will', 'Joe', 'Joe'], dtype='<U4')"
4631+
"array(['', '', '', '', '', '', ''], dtype='<U1')"
46304632
]
46314633
},
4634+
"execution_count": 3,
46324635
"metadata": {},
4633-
"output_type": "display_data"
4636+
"output_type": "execute_result"
46344637
}
46354638
],
46364639
"source": [
4637-
"names = np.array(['Bob', 'Joe', 'Will', 'Bob', 'Will', 'Joe', 'Joe'])\n",
4640+
"names = np.array(['', '', '', '', '', '', ''])\n",
46384641
"names"
46394642
]
46404643
},
46414644
{
46424645
"cell_type": "markdown",
46434646
"metadata": {},
46444647
"source": [
4645-
"* (7, 4) 모양의 2차원 어레이. `randn()` 함수는 표준 정규 분포를 이용하여 임의의 부동소수점으로 이루어진 어레이를 생성한다."
4648+
"* (7, 4) 모양의 2차원 어레이."
46464649
]
46474650
},
46484651
{
46494652
"cell_type": "code",
4650-
"execution_count": null,
4653+
"execution_count": 12,
46514654
"metadata": {},
46524655
"outputs": [
46534656
{
46544657
"data": {
46554658
"text/plain": [
4656-
"array([[ 1.7886, 0.4365, 0.0965, -1.8635],\n",
4657-
" [-0.2774, -0.3548, -0.0827, -0.627 ],\n",
4658-
" [-0.0438, -0.4772, -1.3139, 0.8846],\n",
4659-
" [ 0.8813, 1.7096, 0.05 , -0.4047],\n",
4660-
" [-0.5454, -1.5465, 0.9824, -1.1011],\n",
4661-
" [-1.185 , -0.2056, 1.4861, 0.2367],\n",
4662-
" [-1.0238, -0.713 , 0.6252, -0.1605]])"
4659+
"array([[ 2, 5, 8, 11],\n",
4660+
" [14, 17, 20, 23],\n",
4661+
" [26, 29, 32, 35],\n",
4662+
" [38, 41, 44, 47],\n",
4663+
" [50, 53, 56, 59],\n",
4664+
" [62, 65, 68, 71],\n",
4665+
" [74, 77, 80, 83]])"
46634666
]
46644667
},
4668+
"execution_count": 12,
46654669
"metadata": {},
4666-
"output_type": "display_data"
4670+
"output_type": "execute_result"
46674671
}
46684672
],
46694673
"source": [
4670-
"np.random.seed(3)\n",
4671-
"\n",
4672-
"data = np.random.randn(7, 4)\n",
4674+
"data = np.arange(2, 84, 3).reshape((7, 4))\n",
46734675
"data"
46744676
]
46754677
},
@@ -4679,17 +4681,18 @@
46794681
"source": [
46804682
"부울 인덱싱을 설명하기 위해 `data` 가 가리키는 2차원 어레이의 각 행과 `names` 어레이가 가리키는 각 항목이\n",
46814683
"서로 연관된다고 가정한다. \n",
4682-
"예를 들어, `'Bob'`은 0번 인덱스와 3번 인덱스의 행과 연관되고,\n",
4683-
"`'Joe'`는 1번, 5번, 6번 인덱스의 행과 연관된다.\n",
4684+
"- `'김'`: 0번, 3번 인덱스,\n",
4685+
"- `'정'`: 1번, 5번, 6번 인덱스\n",
4686+
"- `'우'`: 2번, 4번 인덱스\n",
46844687
"\n",
4685-
"이제 `data` 어레이에서 `'Bob'`과 연관된 행만 추출하여 2차원 어레이를 생성하려 해보자.\n",
4686-
"먼저 `names`에 포함된 이름이 `'Bob'`인지 여부를 확인한다.\n",
4688+
"이제 `data` 어레이에서 `''`과 연관된 행만 추출하여 2차원 어레이를 생성해보자.\n",
4689+
"먼저 `names`에 포함된 이름이 `''`인지 여부를 확인한다.\n",
46874690
"그러면 진리값으로 이루어진 길이가 7인 어레이가 생성된다."
46884691
]
46894692
},
46904693
{
46914694
"cell_type": "code",
4692-
"execution_count": null,
4695+
"execution_count": 13,
46934696
"metadata": {},
46944697
"outputs": [
46954698
{
@@ -4698,49 +4701,44 @@
46984701
"array([ True, False, False, True, False, False, False])"
46994702
]
47004703
},
4704+
"execution_count": 13,
47014705
"metadata": {},
4702-
"output_type": "display_data"
4706+
"output_type": "execute_result"
47034707
}
47044708
],
47054709
"source": [
4706-
"name_Bob = (names == 'Bob')\n",
4707-
"name_Bob"
4710+
"name_김 = (names == '')\n",
4711+
"name_김"
47084712
]
47094713
},
47104714
{
47114715
"cell_type": "markdown",
47124716
"metadata": {},
47134717
"source": [
4714-
"이제 `name_Bob`을 `data` 2차원 어레이에 인덱싱으로 적용하면\n",
4718+
"이제 `name_김`을 `data` 2차원 어레이에 인덱싱으로 적용하면\n",
47154719
"`True`가 위치한 인덱스에 해당하는 행인 0번과 3번 행만 추출해서\n",
47164720
"새로운 2차원 어레이를 생성한다."
47174721
]
47184722
},
47194723
{
47204724
"cell_type": "code",
4721-
"execution_count": null,
4725+
"execution_count": 14,
47224726
"metadata": {},
47234727
"outputs": [
47244728
{
47254729
"data": {
47264730
"text/plain": [
4727-
"array([[ 1.7886, 0.4365, 0.0965, -1.8635],\n",
4728-
" [ 0.8813, 1.7096, 0.05 , -0.4047]])"
4731+
"array([[ 2, 5, 8, 11],\n",
4732+
" [38, 41, 44, 47]])"
47294733
]
47304734
},
4735+
"execution_count": 14,
47314736
"metadata": {},
4732-
"output_type": "display_data"
4737+
"output_type": "execute_result"
47334738
}
47344739
],
47354740
"source": [
4736-
"data[name_Bob]"
4737-
]
4738-
},
4739-
{
4740-
"cell_type": "markdown",
4741-
"metadata": {},
4742-
"source": [
4743-
"인덱싱에 사용되는 부울 어레이의 길이가 사용되는 인덱싱에 적용되는 축의 길이와 동일해야 함에 주의한다."
4741+
"data[name_김]"
47444742
]
47454743
},
47464744
{
@@ -4761,7 +4759,7 @@
47614759
"cell_type": "markdown",
47624760
"metadata": {},
47634761
"source": [
4764-
"* 행 기준: Bob이 포함된 행의 인덱스를 갖는 행\n",
4762+
"* 행 기준: 김이 포함된 행의 인덱스를 갖는 행\n",
47654763
"* 열 기준: 3번 열"
47664764
]
47674765
},
@@ -4781,14 +4779,14 @@
47814779
}
47824780
],
47834781
"source": [
4784-
"data[name_Bob, 3]"
4782+
"data[name_김, 3]"
47854783
]
47864784
},
47874785
{
47884786
"cell_type": "markdown",
47894787
"metadata": {},
47904788
"source": [
4791-
"* 행 기준: Bob이 포함된 행의 인덱스를 갖는 행\n",
4789+
"* 행 기준: 김이 포함된 행의 인덱스를 갖는 행\n",
47924790
"* 열 기준: 2번 열 이후 전체"
47934791
]
47944792
},
@@ -4809,7 +4807,7 @@
48094807
}
48104808
],
48114809
"source": [
4812-
"data[name_Bob, 2:]"
4810+
"data[name_김, 2:]"
48134811
]
48144812
},
48154813
{
@@ -4827,7 +4825,7 @@
48274825
"논리 연산자(`~`, `&`, `|`)를 적용하여 생성된 부울 어레이 표현식이다.\n",
48284826
"마스크를 활용하면 보다 다양한 부울 인덱싱을 간단하게 적용할 수 있다.\n",
48294827
"\n",
4830-
"예를 들어, 이름이 `'Bob'`이 아닌 이름과 연관된 행만 가져오려면\n",
4828+
"예를 들어, 이름이 `''`이 아닌 이름과 연관된 행만 가져오려면\n",
48314829
"`==` 대신에 `!=`를 이용하거나 `==`와 `~` 연산자를 함께 이용한다."
48324830
]
48334831
},
@@ -4851,7 +4849,7 @@
48514849
}
48524850
],
48534851
"source": [
4854-
"mask = names != 'Bob'\n",
4852+
"mask = names != ''\n",
48554853
"data[mask]"
48564854
]
48574855
},
@@ -4875,15 +4873,15 @@
48754873
}
48764874
],
48774875
"source": [
4878-
"mask = ~name_Bob\n",
4876+
"mask = ~name_김\n",
48794877
"data[mask]"
48804878
]
48814879
},
48824880
{
48834881
"cell_type": "markdown",
48844882
"metadata": {},
48854883
"source": [
4886-
"다음은 `'Bob'` 또는 `'Will'` 이 위치한 인덱스에 해당하는 행만 가져온다."
4884+
"다음은 `''` 또는 `''` 이 위치한 인덱스에 해당하는 행만 가져온다."
48874885
]
48884886
},
48894887
{
@@ -4905,7 +4903,7 @@
49054903
}
49064904
],
49074905
"source": [
4908-
"mask = (names == 'Bob') | (names == 'Will')\n",
4906+
"mask = (names == '') | (names == '')\n",
49094907
"data[mask]"
49104908
]
49114909
},
@@ -4921,7 +4919,7 @@
49214919
"metadata": {},
49224920
"source": [
49234921
"마스크를 이용하여 전체 행 또는 전체 열을 특정 값으로 변경할 수 있다.\n",
4924-
"아래 코드는 `data`에서 `'Joe'`와 관련 없는 행의 항목을 모두 7로 변경한다."
4922+
"아래 코드는 `data`에서 `''`와 관련 없는 행의 항목을 모두 7로 변경한다."
49254923
]
49264924
},
49274925
{
@@ -4946,7 +4944,7 @@
49464944
}
49474945
],
49484946
"source": [
4949-
"mask = names != 'Joe'\n",
4947+
"mask = names != ''\n",
49504948
"data[mask] = 7\n",
49514949
"data"
49524950
]
@@ -5502,7 +5500,7 @@
55025500
}
55035501
],
55045502
"source": [
5505-
"data2 = data[names == 'Bob']\n",
5503+
"data2 = data[names == '']\n",
55065504
"data2"
55075505
]
55085506
},

0 commit comments

Comments
 (0)