numpy 예제와 숙제
li = [[1880, 90993, 110491],
[1881, 91954, 100745],
[1882, 107850, 113688],
[1883, 112321, 104629],
[1884, 129022, 114445],
[1885, 133055, 107800],
[1886, 144535, 110784],
[1887, 145982, 101414],
[1888, 178627, 120853],
[1889, 178366, 110584],
[1890, 190377, 111025],
[1891, 185482, 101196],
[1892, 212346, 122037],
[1893, 212906, 112317],
[1894, 222922, 115772],
[1895, 233630, 117398],
[1896, 237920, 119570],
[1897, 234202, 112758],
[1898, 258770, 122693],
[1899, 233023, 106212],
[1900, 299828, 150499],
[1901, 239348, 106471],
[1902, 264077, 122659],
[1903, 261973, 119234],
[1904, 275371, 128125],
[1905, 291629, 132319],
[1906, 295303, 133159],
[1907, 318566, 146833],
[1908, 334313, 154344],
[1909, 347228, 163999],
[1910, 396501, 194218],
[1911, 418299, 225968],
[1912, 558103, 429945],
[1913, 624518, 512557],
[1914, 761548, 654762],
[1915, 983874, 848603],
[1916, 1044323, 890099],
[1917, 1081280, 925511],
[1918, 1157647, 1013537],
[1919, 1130145, 980149],
[1920, 1198283, 1064463],
[1921, 1232999, 1101457],
[1922, 1200919, 1088287],
[1923, 1206330, 1096168],
[1924, 1248876, 1132751],
[1925, 1217352, 1115958],
[1926, 1185304, 1110505],
[1927, 1192330, 1126717],
[1928, 1153117, 1107518],
[1929, 1116422, 1075313],
[1930, 1125761, 1097176],
[1931, 1064497, 1039127],
[1932, 1066994, 1043808],
[1933, 1007710, 991127],
[1934, 1044039, 1032291],
[1935, 1048428, 1040930],
[1936, 1040202, 1036974],
[1937, 1063872, 1066309],
[1938, 1103277, 1108841],
[1939, 1096518, 1106544],
[1940, 1143325, 1158900],
[1941, 1207919, 1227941],
[1942, 1350545, 1380774],
[1943, 1395082, 1426846],
[1944, 1327104, 1362555],
[1945, 1307028, 1345610],
[1946, 1571184, 1623650],
[1947, 1772644, 1829223],
[1948, 1697814, 1754469],
[1949, 1710825, 1773725],
[1950, 1713180, 1790673],
[1951, 1800042, 1881080],
[1952, 1854698, 1944277],
[1953, 1880326, 1969777],
[1954, 1941682, 2037374],
[1955, 1954664, 2057918],
[1956, 2007512, 2113694],
[1957, 2044160, 2155866],
[1958, 2010884, 2120712],
[1959, 2023044, 2133509],
[1960, 2022093, 2132717],
[1961, 2017316, 2122502],
[1962, 1966548, 2068945],
[1963, 1927217, 2031755],
[1964, 1894594, 1993270],
[1965, 1765001, 1861378],
[1966, 1691868, 1783964],
[1967, 1650764, 1744527],
[1968, 1640103, 1738928],
[1969, 1686947, 1789732],
[1970, 1748147, 1859594],
[1971, 1663475, 1769201],
[1972, 1521185, 1622666],
[1973, 1458139, 1559338],
[1974, 1467413, 1573105],
[1975, 1457699, 1562207],
[1976, 1465096, 1569904],
[1977, 1532997, 1643684],
[1978, 1531658, 1642250],
[1979, 1605051, 1721947],
[1980, 1659933, 1783876],
[1981, 1667465, 1790907],
[1982, 1692678, 1813970],
[1983, 1670061, 1791732],
[1984, 1682973, 1803830],
[1985, 1720036, 1847032],
[1986, 1714664, 1840164],
[1987, 1737891, 1865662],
[1988, 1779839, 1912602],
[1989, 1843105, 1999999],
[1990, 1897709, 2052543],
[1991, 1874434, 2019463],
[1992, 1843304, 1996388],
[1993, 1808379, 1960397],
[1994, 1785074, 1931157],
[1995, 1757927, 1902832],
[1996, 1752249, 1893378],
[1997, 1739806, 1884122],
[1998, 1765915, 1910250],
[1999, 1772632, 1918809],
[2000, 1814601, 1962406],
[2001, 1799049, 1941251],
[2002, 1795206, 1939815],
[2003, 1825359, 1973434],
[2004, 1834145, 1982794],
[2005, 1845379, 1994841],
[2006, 1898463, 2052377],
[2007, 1919408, 2072139],
[2008, 1887234, 2036289],
[2009, 1832925, 1979303],
[2010, 1772738, 1913851],
[2011, 1753500, 1893230]]
import numpy as np
birth = np.array(li)
cen1900_a = birth[birth[:,0] >= 1900]
cen1900_b = cen1900_a[cen1900_a[:,0] < 2000]
cen2000 = birth[birth[:,0] >= 2000]
cen1800 = birth[birth[:,0] < 1900]
avg_1800 = cen1800.mean(axis = 0)[1:3]
avg_1900 = cen1900_b.mean(axis = 0)[1:3]
avg_2000 = cen2000.mean(axis = 0)[1:3]
print("1800년대 남아 평균 : {}".format(int(avg_1800[0])))
print("1800년대 여아 평균 : {}".format(avg_1800[1]))
print("1900년대 남아 평균 : {}".format(avg_1900[0]))
print("1900년대 여아 평균 : {}".format(avg_1900[1]))
print("2000년대 남아 평균 : {}".format(avg_2000[0]))
print("2000년대 여아 평균 : {}".format(avg_2000[1]))
NumPy에서 데이터를 추출(인덱싱/슬라이싱)하고 가공(형태 변경/연산)하는 핵심 방법 이해.
설명을 위해 아래의 3행 4열 2차원 배열을 기준으로 예시.
import numpy as nparr = np.array([[10, 20, 30, 40],
[90, 100, 110, 120]])
쉼표( , )를 기준으로 [행, 열] 위치를 지정합니다. (0부터 시작)
원하는 구간을 잘라내며, 끝 인덱스는 포함되지 않습니다.
조건식을 넣으면 조건을 만족하는(True) 데이터만 1차원 배열로 뽑아줍니다.
데이터를 유지한 채 배열의 차원과 구조를 바꿉니다.
NumPy는 axis 파라미터를 통해 행별, 열별 연산을 쉽게 처리합니다.
지금 해결하려는 데이터 분석 문제나 구현하고 싶은 구체적인 조건이 있으신가요?