Numpy 基礎操作¶ 以numpy的基本數據例子來學習numpy基本數據處理方法 主要內容有: 創建數組 數組維度轉換 數據選區和切片 數組數據計算 隨機數 數據合併 數據統計計算 In [1]: import numpy as np 創建一維數組¶ In [2]: data = np.arang ...
Numpy 基礎操作¶
以numpy的基本數據例子來學習numpy基本數據處理方法
主要內容有:
- 創建數組
- 數組維度轉換
- 數據選區和切片
- 數組數據計算
- 隨機數
- 數據合併
- 數據統計計算
import numpy as np
創建一維數組¶
In [2]:data = np.arange(15) dataOut[2]:
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14])
reshape進行維度轉換¶
- data.reshape(rows, cols), 轉換的行數,列數。
- -1表示使用預設計算,reshape(3, -1),表示三行,列數根據數據自動計算
- reshape(-1, 5)表示5列,行數根據計算得出
data = data.reshape(3,5) dataOut[3]:
array([[ 0, 1, 2, 3, 4], [ 5, 6, 7, 8, 9], [10, 11, 12, 13, 14]])
np.newaxis增加維度¶
為數據增加維度,下麵例子展示增加了一個維度
數據變為三行,一列,垂直五的數據
In [4]:d = data[:, np.newaxis] dOut[4]:
array([[[ 0, 1, 2, 3, 4]], [[ 5, 6, 7, 8, 9]], [[10, 11, 12, 13, 14]]])In [5]:
d.shapeOut[5]:
(3, 1, 5)In [6]:
data.shapeOut[6]:
(3, 5)
讀取逗號分割數據¶
In [7]:url = 'https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data' iris_2d = np.genfromtxt(url, delimiter=',', dtype='object') iris_2d[:10]Out[7]:
array([[b'5.1', b'3.5', b'1.4', b'0.2', b'Iris-setosa'], [b'4.9', b'3.0', b'1.4', b'0.2', b'Iris-setosa'], [b'4.7', b'3.2', b'1.3', b'0.2', b'Iris-setosa'], [b'4.6', b'3.1', b'1.5', b'0.2', b'Iris-setosa'], [b'5.0', b'3.6', b'1.4', b'0.2', b'Iris-setosa'], [b'5.4', b'3.9', b'1.7', b'0.4', b'Iris-setosa'], [b'4.6', b'3.4', b'1.4', b'0.3', b'Iris-setosa'], [b'5.0', b'3.4', b'1.5', b'0.2', b'Iris-setosa'], [b'4.4', b'2.9', b'1.4', b'0.2', b'Iris-setosa'], [b'4.9', b'3.1', b'1.5', b'0.1', b'Iris-setosa']], dtype=object)
數據切片和類型轉換¶
使用[m, n]來對數據取值或者切片
- [:, n] 取列數據
- [m, :] 取行數據
- [m:n, m:n] 數據切片
astype來指定數據類型
In [8]:names = ('sepallength', 'sepalwidth', 'petallength', 'petalwidth', 'species') sepallength = iris_2d[:, 0].astype('float') petallength = iris_2d[:, 2].astype('float') sepallengthOut[8]:
array([5.1, 4.9, 4.7, 4.6, 5. , 5.4, 4.6, 5. , 4.4, 4.9, 5.4, 4.8, 4.8, 4.3, 5.8, 5.7, 5.4, 5.1, 5.7, 5.1, 5.4, 5.1, 4.6, 5.1, 4.8, 5. , 5. , 5.2, 5.2, 4.7, 4.8, 5.4, 5.2, 5.5, 4.9, 5. , 5.5, 4.9, 4.4, 5.1, 5. , 4.5, 4.4, 5. , 5.1, 4.8, 5.1, 4.6, 5.3, 5. , 7. , 6.4, 6.9, 5.5, 6.5, 5.7, 6.3, 4.9, 6.6, 5.2, 5. , 5.9, 6. , 6.1, 5.6, 6.7, 5.6, 5.8, 6.2, 5.6, 5.9, 6.1, 6.3, 6.1, 6.4, 6.6, 6.8, 6.7, 6. , 5.7, 5.5, 5.5, 5.8, 6. , 5.4, 6. , 6.7, 6.3, 5.6, 5.5, 5.5, 6.1, 5.8, 5. , 5.6, 5.7, 5.7, 6.2, 5.1, 5.7, 6.3, 5.8, 7.1, 6.3, 6.5, 7.6, 4.9, 7.3, 6.7, 7.2, 6.5, 6.4, 6.8, 5.7, 5.8, 6.4, 6.5, 7.7, 7.7, 6. , 6.9, 5.6, 7.7, 6.3, 6.7, 7.2, 6.2, 6.1, 6.4, 7.2, 7.4, 7.9, 6.4, 6.3, 6.1, 7.7, 6.3, 6.4, 6. , 6.9, 6.7, 6.9, 5.8, 6.8, 6.7, 6.7, 6.3, 6.5, 6.2, 5.9])In [9]:
petallength
Out[9]:
array([1.4, 1.4, 1.3, 1.5, 1.4, 1.7, 1.4, 1.5, 1.4, 1.5, 1.5, 1.6, 1.4, 1.1, 1.2, 1.5, 1.3, 1.4, 1.7, 1.5, 1.7, 1.5, 1. , 1.7, 1.9, 1.6, 1.6, 1.5, 1.4, 1.6, 1.6, 1.5, 1.5, 1.4, 1.5, 1.2, 1.3, 1.5, 1.3, 1.5, 1.3, 1.3, 1.3, 1.6, 1.9, 1.4, 1.6, 1.4, 1.5, 1.4, 4.7, 4.5, 4.9, 4. , 4.6, 4.5, 4.7, 3.3, 4.6, 3.9, 3.5, 4.2, 4. , 4.7, 3.6, 4.4, 4.5, 4.1, 4.5, 3.9, 4.8, 4. , 4.9, 4.7, 4.3, 4.4, 4.8, 5. , 4.5, 3.5, 3.8, 3.7, 3.9, 5.1, 4.5, 4.5, 4.7, 4.4, 4.1, 4. , 4.4, 4.6, 4. , 3.3, 4.2, 4.2, 4.2, 4.3, 3. , 4.1, 6. , 5.1, 5.9, 5.6, 5.8, 6.6, 4.5, 6.3, 5.8, 6.1, 5.1, 5.3, 5.5, 5. , 5.1, 5.3, 5.5, 6.7, 6.9, 5. , 5.7, 4.9, 6.7, 4.9, 5.7, 6. , 4.8, 4.9, 5.6, 5.8, 6.1, 6.4, 5.6, 5.1, 5.6, 6.1, 5.6, 5.5, 4.8, 5.4, 5.6, 5.1, 5.1, 5.9, 5.7, 5.2, 5. , 5.2, 5.4, 5.1])
數據運算¶
numpy數據運算語法與python基本一致,但是是數據中的每個數據進行運算
- arr數據與單個數據運算,arr中每個數據與單數進行計算,返回新的arr
- arr之間運算,arr對用位置的數據一一計算,返回新的arr
volume = (np.pi * petallength * (sepallength**2))/3 volumeOut[10]:
array([ 38.13265163, 35.20049849, 30.07237208, 33.23805027, 36.65191429, 51.91167701, 31.02218026, 39.26990817, 28.38324243, 37.71481981, 45.80442089, 38.60389053, 33.77840421, 21.29895099, 42.27327075, 51.03517266, 39.69716477, 38.13265163, 57.83986235, 40.85641246, 51.91167701, 40.85641246, 22.15870018, 46.30393412, 45.84212 , 41.88790205, 41.88790205, 42.47433268, 39.6427105 , 37.01215025, 38.60389053, 45.80442089, 42.47433268, 44.34881629, 37.71481981, 31.41592654, 41.1810437 , 37.71481981, 26.35586797, 40.85641246, 34.03392041, 27.56747554, 26.35586797, 41.88790205, 51.75145578, 33.77840421, 43.58017329, 31.02218026, 44.12366882, 36.65191429, 241.16959604, 193.01945264, 244.29966952, 126.71090369, 203.52284408, 153.10551797, 195.34737279, 82.97260357, 209.83325652, 110.43326496, 91.62978573, 153.10237638, 150.79644737, 183.14123814, 118.22441474, 206.83827152, 147.78051842, 144.43367505, 181.14423241, 128.0764493 , 174.97414443, 155.86488352, 203.66002695, 183.14123814, 184.4408103 , 200.71007145, 232.42759088, 235.04349037, 169.64600329, 119.08206953, 120.37535851, 117.20758592, 137.38812993, 192.2654704 , 137.41326267, 169.64600329, 220.94088094, 182.87839155, 134.64447234, 126.71090369, 139.38199406, 179.24461605, 140.91090249, 86.39379797, 137.92848386, 142.89848344, 142.89848344, 173.09337763, 81.71282492, 139.4961386 , 249.37962484, 179.66140067, 311.45644848, 232.75431652, 256.61575992, 399.20846168, 113.14445942, 351.57249227, 272.65044882, 331.14899843, 225.64489234, 227.33402199, 266.32328122, 170.11724219, 179.66140067, 227.33402199, 243.34253096, 415.99189683, 428.40956539, 188.49555922, 284.18532985, 160.91656451, 415.99189683, 203.66002695, 267.94957902, 325.72032632, 193.22051457, 190.93448231, 240.2019855 , 314.86298211, 349.80168121, 418.27583469, 240.2019855 , 211.97268112, 218.21083693, 378.73889114, 232.75431652, 235.91266433, 180.95573685, 269.22820723, 263.24870921, 254.2710846 , 179.66140067, 285.69224713, 267.94957902, 244.44522998, 207.81635403, 230.069302 , 217.37307889, 185.91002846])
數據維度轉換¶
volume原來是一維的,增加維度後,變為二維
In [11]:volume = volume[:, np.newaxis] volumeOut[11]:
array([[ 38.13265163], [ 35.20049849], [ 30.07237208], [ 33.23805027], [ 36.65191429], [ 51.91167701], [ 31.02218026], [ 39.26990817], [ 28.38324243], [ 37.71481981], [ 45.80442089], [ 38.60389053], [ 33.77840421], [ 21.29895099], [ 42.27327075], [ 51.03517266], [ 39.69716477], [ 38.13265163], [ 57.83986235], [ 40.85641246], [ 51.91167701], [ 40.85641246], [ 22.15870018], [ 46.30393412], [ 45.84212 ], [ 41.88790205], [ 41.88790205], [ 42.47433268], [ 39.6427105 ], [ 37.01215025], [ 38.60389053], [ 45.80442089], [ 42.47433268], [ 44.34881629], [ 37.71481981], [ 31.41592654], [ 41.1810437 ], [ 37.71481981], [ 26.35586797], [ 40.85641246], [ 34.03392041], [ 27.56747554], [ 26.35586797], [ 41.88790205], [ 51.75145578], [ 33.77840421], [ 43.58017329], [ 31.02218026], [ 44.12366882], [ 36.65191429], [241.16959604], [193.01945264], [244.29966952], [126.71090369], [203.52284408], [153.10551797], [195.34737279], [ 82.97260357], [209.83325652], [110.43326496], [ 91.62978573], [153.10237638], [150.79644737], [183.14123814], [118.22441474], [206.83827152], [147.78051842], [144.43367505], [181.14423241], [128.0764493 ], [174.97414443], [155.86488352], [203.66002695], [183.14123814], [184.4408103 ], [200.71007145], [232.42759088], [235.04349037], [169.64600329], [119.08206953], [120.37535851], [117.20758592], [137.38812993], [192.2654704 ], [137.41326267], [169.64600329], [220.94088094], [182.87839155], [134.64447234], [126.71090369], [139.38199406], [179.24461605], [140.91090249], [ 86.39379797], [137.92848386], [142.89848344], [142.89848344], [173.09337763], [ 81.71282492], [139.4961386 ], [249.37962484], [179.66140067], [311.45644848], [232.75431652], [256.61575992], [399.20846168], [113.14445942], [351.57249227], [272.65044882], [331.14899843], [225.64489234], [227.33402199], [266.32328122], [170.11724219], [179.66140067], [227.33402199], [243.34253096], [415.99189683], [428.40956539], [188.49555922], [284.18532985], [160.91656451], [415.99189683], [203.66002695], [267.94957902], [325.72032632], [193.22051457], [190.93448231], [240.2019855 ], [314.86298211], [349.80168121], [418.27583469], [240.2019855 ], [211.97268112], [218.21083693], [378.73889114], [232.75431652], [235.91266433], [180.95573685], [269.22820723], [263.24870921], [254.2710846 ], [179.66140067], [285.69224713], [267.94957902], [244.44522998], [207.81635403], [230.069302 ], [217.37307889], [185.91002846]])
計算示例¶
In [12]:data
Out[12]:
array([[ 0, 1, 2, 3, 4], [ 5, 6, 7, 8, 9], [10, 11, 12, 13, 14]])In [13]:
# 取第四列數據,每個數據+10 d = data[:,4] +10 dOut[13]:
array([14, 19, 24])In [14]:
d = d[:, np.newaxis] dOut[14]:
array([[14], [19], [24]])
數據縱向堆疊¶
- np.hstack([data1, data2]), 把data2在列的方向上添加到data1上
- np.vstack([data1, data2]), data2在行的方向上添加到data1上
np.hstack([data,d])Out[15]:
array([[ 0, 1, 2, 3, 4, 14], [ 5, 6, 7, 8, 9, 19], [10, 11, 12, 13, 14, 24]])
查找數據¶
np.partition快速查找第n大的值
In [16]:l=[3,4,5,2,1] np.partition(l,kth=-4)Out[16]:
array([1, 2, 5, 4, 3])
隨機數¶
In [17]:b = np.random.rand(10) bOut[17]:
array([0.68561367, 0.01516211, 0.53513034, 0.87153709, 0.06330117, 0.86803698, 0.11665939, 0.11038331, 0.391967 , 0.94081668])In [18]:
b = np.random.uniform(0,10,5) bOut[18]:
array([2.06978576, 7.1781825 , 2.43242777, 8.59237313, 7.29724532])In [19]:
np.random.randn(5)Out[19]:
array([ 0.00160165, 1.16678333, -0.67973919, -0.3598035 , -0.00290401])In [20]:
np.random.randint(0,10,5)Out[20]:
array([8, 9, 3, 2, 4])In [21]:
np.random.randint(0,10,5)Out[21]:
array([2, 3, 3, 2, 4])In [22]:
np.random.seed(5) np.random.randint(0,10,5)Out[22]:
array([3, 6, 6, 0, 9])In [23]:
np.random.seed(6) np.random.randint(0,10,5)Out[23]:
array([9, 3, 4, 0, 9])In [24]:
np.random.uniform(10,100,10)Out[24]:
array([18.9524523 , 64.76262553, 57.73568176, 53.45494409, 84.2688357 , 77.9511675 , 45.09780233, 31.58324146, 24.00535865, 75.18958605])In [25]:
np.random.standard_normal(10)Out[25]:
array([-0.05607706, 0.86108782, 1.02566315, 0.60680207, 1.97193091, -0.47434219, -0.39388112, -0.97062796, -1.02770216, 2.08217624])In [26]:
np.linspace(1,20, 10)Out[26]:
array([ 1. , 3.11111111, 5.22222222, 7.33333333, 9.44444444, 11.55555556, 13.66666667, 15.77777778, 17.88888889, 20. ])In [27]:
np.arange(0,5)Out[27]:
array([0, 1, 2, 3, 4])In [28]:
a = np.arange(10).reshape(10) aOut[28]:
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])In [29]:
a+aOut[29]:
array([ 0, 2, 4, 6, 8, 10, 12, 14, 16, 18])In [30]:
a-aOut[30]:
array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0])In [31]:
a*aOut[31]:
array([ 0, 1, 4, 9, 16, 25, 36, 49, 64, 81])In [32]:
a/a
c:\python36\lib\site-packages\ipykernel_launcher.py:1: RuntimeWarning: invalid value encountered in true_divide """Entry point for launching an IPython kernel.Out[32]:
array([nan, 1., 1., 1., 1., 1., 1., 1., 1., 1.])In [33]:
a.dot(a)Out[33]:
285In [34]:
a
Out[34]:
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])In [35]:
b = np.arange(12).reshape(3,4) bOut[35]:
array([[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11]])In [36]:
b[0]Out[36]:
array([0, 1, 2, 3])In [37]:
b[:,0]Out[37]:
array([0, 4, 8])In [38]:
b[0,:]Out[38]:
array([0, 1, 2, 3])In [39]:
b[-1]Out[39]:
array([ 8, 9, 10, 11])In [40]:
b.sizeOut[40]:
12In [41]:
b.shapeOut[41]:
(3, 4)
數據拉平¶
將多維數據將為一維
- ravel 方法是返回的視圖,修改數據會影響原數據
- flat 方法是返回原數據的copy,不會影響原數據
b.ravel()Out[42]:
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11])In [43]:
[x for x in b.flat]Out[43]:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]In [44]:
b.flat[3]Out[44]:
3
數據resize和reshape¶
- reshape:有返回值,所謂有返回值,即不對原始多維數組進行修改;
- resize:無返回值,所謂有返回值,即會對原始多維數組進行修改;
b.reshape(3,4)Out[45]:
array([[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11]])In [46]:
c = b.resize(3,4) cIn [47]:
b
Out[47]:
array([[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11]])
arr平均值¶
np.mean(d, axis=0),計算平均值,axis來指定按那個軸運算
In [48]:np.mean(b, axis=0)Out[48]:
array([4., 5., 6., 7.])In [49]:
a = np.array([1,0.2,3])In [50]:
a
Out[50]:
array([1. , 0.2, 3. ])In [51]:
a.dtypeOut[51]:
dtype('float64')In [52]:
np.arange(10)Out[52]:
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
特殊矩陣¶
In [53]:np.ones((5,5))Out[53]:
array([[1., 1., 1., 1., 1.], [1., 1., 1., 1., 1.], [1., 1., 1., 1., 1.], [1., 1., 1., 1., 1.], [1., 1., 1., 1., 1.]])In [54]:
b
Out[54]:
array([[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11]])In [55]:
np.ones_like(b)Out[55]:
array([[1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1]])In [56]:
np.identity(4)Out[56]:
array([[1., 0., 0., 0.], [0., 1., 0., 0.], [0., 0., 1., 0.], [0., 0., 0., 1.]])In [57]:
np.eye(4)Out[57]:
array([[1., 0., 0., 0.], [0., 1., 0., 0.], [0., 0., 1., 0.], [0., 0., 0., 1.]])
取數據示例¶
In [58]:a
Out[58]:
array([1. , 0.2, 3. ])In [59]:
b
Out[59]:
array([[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11]])In [60]:
b[:,2]Out[60]:
array([ 2, 6, 10])In [61]:
# 布爾值取數據 b[b>3]Out[61]:
array([ 4, 5, 6, 7, 8, 9, 10, 11])In [62]:
b
Out[62]:
array([[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11]])In [63]:
b[b==3]Out[63]:
array([3])In [64]:
b
Out[64]:
array([[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11]])In [65]:
c = b[b!=3]In [66]:
c
Out[66]:
array([ 0, 1, 2, 4, 5, 6, 7, 8, 9, 10, 11])
更多相關文章
-
系統信息 arch 顯示機器的處理器架構(1) uname -m 顯示機器的處理器架構(2) uname -r 顯示正在使用的內核版本 dmidecode -q 顯示硬體系統部件 - (SMBIOS / DMI) hdparm -i /dev/hda 羅列一個磁碟的架構特性 hdparm -tT / ...
-
1.安裝DHCP伺服器角色,這樣在netsh下才會有dhcp上下文 2.編寫配置dhcp的腳本 從命令行運行netsh有兩種語法: 比如要獲取已經配置的網路介面列表 1.寫全 其中:-r RemoteComputerName 是指定要操作的遠程主機或本機的電腦名,interface ipv4 是n ...
-
shutdown shutdown 此命令用來安全關閉或重啟Linux系統,系統在關閉之前會通知所有的登錄用戶,系統即將關閉,此時所有新用戶都不可以登錄。 以下截取man手冊的內容(man shutdown): NAME shutdown - bring the system down SYNOPS ...
-
從mysql資料庫中導出正常資料庫的腳本語句,而後使用腳本語句創建資料庫的過程中,執行語句提示Can't Create Table 'XXX' erro150的錯誤,語句執行中斷,創建table失敗,仔細分析相關語句發現導致此錯誤的原因為創建的外鍵和關聯的表的主鍵類型不匹配。 仔細查看被執行的語句, ...
-
snapshot其實就是一組metadata信息的集合,它可以讓管理員將表恢復到以前的一個狀態。snapshot並不是一份拷貝,它只是一個文件名的列表,並不拷貝數據。一個全的snapshot恢復以為著你可以回滾到原來的表schema和創建snapshot之前的數據。 應用場景: 1獲取:該操作嘗試從 ...
-
[20190402]Library Cache mutex.txt1.環境:SCOTT@book> @ ver1PORT_STRING VERSION BANNER x86_64/Linux 2.4.xx 11.2.0.4.0 Oracle Database 11g Enterprise Editi ...
-
本篇文章並非原創,只是看到其中內容講的非常好,搬過來,還望海涵。 原文鏈接地址:http://wpceo.com/user-database-table-design/ 說起用戶表,大概是每個應用/網站立項動工(碼農們)考慮的第一件事情。用戶表結構的設計,算是整個後臺架構的基石。如果基石不穩,待到後 ...
-
索引模板就是將已經創建好的某個索引參數設置(settings)和索引映射(mapping)保存下來作為模板, 在創建新索引時, 指定使用某個模板就可以直接使用已經定義好的設置和映射. ...