{"id":138,"date":"2020-12-20T14:21:25","date_gmt":"2020-12-20T14:21:25","guid":{"rendered":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/?post_type=chapter&#038;p=138"},"modified":"2020-12-28T20:07:57","modified_gmt":"2020-12-28T20:07:57","slug":"numpy-uhemootmelised-jarjendid","status":"publish","type":"chapter","link":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/chapter\/numpy-uhemootmelised-jarjendid\/","title":{"raw":"NumPy \u00fchem\u00f5\u00f5tmelised j\u00e4rjendid","rendered":"NumPy \u00fchem\u00f5\u00f5tmelised j\u00e4rjendid"},"content":{"raw":"Sageli on vaja anal\u00fc\u00fcsida andmetabeli \u00fcht veergu v\u00f5i rida, n\u00e4iteks leida veeru aritmeetiline keskmine. Selleks saab kasutada NumPy \u00fchem\u00f5\u00f5tmelised j\u00e4rjendeid.\r\n<h2>J\u00e4rjendi loomine<\/h2>\r\nK\u00f5igepealt proovime NumPy abil luua \u00fchem\u00f5\u00f5tmelisi j\u00e4rjendeid. NumPy kasutamiseks, peab selle Pythonis importima k\u00e4suga <code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">import numpy as np<\/code>, kus <code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">np<\/code> on levinud l\u00fchend selle mooduli kasutamiseks. Programmis ei pea pikalt kirjutama v\u00e4lja <code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">numpy<\/code>, vaid saab kasutada l\u00fchendit <code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">np<\/code>. J\u00e4rjendi saab NumPy abil luua <code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">array<\/code> funktsiooni kasutades. V\u00f5rreldes tavalise Pythoniga, kus j\u00e4rjendi elemendid lisatakse nurksulgude vahele, on NumPy erinev. NumPy puhul kasutatakse j\u00e4rjendit <code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">array<\/code> funktsiooni argumendina ehk <code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">np.array(j\u00e4rjend)<\/code>.\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-linenumbers=\"false\" data-enlighter-theme=\"bootstrap4\"># NumPy j\u00e4rjendi loomine ja v\u00e4ljastamine\r\nimport numpy as np\r\n\r\nx = np.array([1, 2, 3])\r\nprint(x)<\/pre>\r\n<pre><span style=\"color: #3366ff\"><strong>&gt;&gt;&gt;<\/strong><\/span> <span style=\"color: #999999\">%Run guido.py<\/span>\r\n  [1 2 3]<\/pre>\r\n<span style=\"background-color: #f1c232\">\u00a0! <\/span><span style=\"background-color: #fff2cc\">\u00a0NumPy programmis puuduvad j\u00e4rjendi v\u00e4ljastamisel elementide vahel komad, n\u00e4iteks [1 2 3].<\/span>\r\n\r\nLisaks on v\u00f5imalik luua j\u00e4rjend <code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">arange<\/code> funktsiooni kasutades, mis on v\u00e4ga sarnane <code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">range<\/code> funktsiooniga, kus esimene parameeter on sammu algus, teine sammu l\u00f5pp ja kolmas on sammu pikkus. Ka <code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">arange<\/code> funktsiooni puhul ei kuulu sammu l\u00f5pp loodud j\u00e4rjendi elementide hulka.\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\" data-enlighter-linenumbers=\"false\">x = np.arange(5)\r\nprint(x)<\/pre>\r\n<pre><span style=\"color: #3366ff\"><strong>&gt;&gt;&gt;<\/strong><\/span> <span style=\"color: #999999\">%Run guido.py<\/span>\r\n  [0 1 2 3 4]<\/pre>\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\" data-enlighter-linenumbers=\"false\">x = np.arange(1, 10, 2)\r\nprint(x)<\/pre>\r\n<pre><span style=\"color: #3366ff\"><strong>&gt;&gt;&gt;<\/strong><\/span> <span style=\"color: #999999\">%Run guido.py<\/span>\r\n  [1 3 5 7 9]<\/pre>\r\nErinevalt tavalisest Pythoni <code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">range<\/code> funktsioonist, mille argumendid peavad olema t\u00e4isarvud,\u00a0 v\u00f5ivad <code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">arange<\/code> funktsiooni argumentideks olla ka ujukomaarvud.\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\" data-enlighter-linenumbers=\"false\">x = np.arange(0, 3.5, 0.4)\r\nprint(x)<\/pre>\r\n<pre><span style=\"color: #3366ff\"><strong>&gt;&gt;&gt;<\/strong><\/span> <span style=\"color: #999999\">%Run guido.py<\/span>\r\n  [0.\u00a0 0.4 0.8 1.2 1.6 2.\u00a0 2.4 2.8 3.2]<\/pre>\r\n<span style=\"background-color: #f1c232\">\u00a0! <\/span><span style=\"background-color: #fff2cc\">\u00a0Numpy j\u00e4rjendis ei kuvata v\u00e4ljastamisel nulle koma j\u00e4rel.<\/span>\r\n\r\nLisaks saab luua j\u00e4rjendeid kasutades <code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">linspace<\/code> funktsiooni, mis v\u00f5ib olla eriti kasulik jooniste loomisel. Selle funktsiooni abil saab luua j\u00e4rjendi, milles on teatud arv elemente mingist vahemikust \u00fchtlase intervalli j\u00e4rgi. N\u00e4iteks tahame, et j\u00e4rjendis oleks 5 arvu l\u00f5igust 0-10 ja need arvud on v\u00f5rdsel kaugusel \u00fcksteisest arvteljel.\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\" data-enlighter-linenumbers=\"false\">x = np.linspace(0, 10, num=5)\r\nprint(x)<\/pre>\r\n<pre><span style=\"color: #3366ff\"><strong>&gt;&gt;&gt;<\/strong><\/span> <span style=\"color: #999999\">%Run guido.py<\/span>\r\n  [ 0. \u00a0 2.5\u00a0 5. \u00a0 7.5 10. ]<\/pre>\r\n[h5p id=\"28\"]\r\n<h2>J\u00e4rjendi suurus<\/h2>\r\nJ\u00e4rjendi suuruse leidmine on sarnane Pythonile. Kui Pythonis on k\u00e4sk <code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">len(j\u00e4rjend)<\/code>, siis NumPys kasutatakse funktsiooni <code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">size<\/code> ja n\u00e4eb see v\u00e4lja nii (olgu j\u00e4rjendi nimi <code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">x<\/code>):\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\" data-enlighter-linenumbers=\"false\"># NumPy j\u00e4rjendi elementide arvu leidmine ja v\u00e4ljastamine\r\n\r\nx = np.array([1, 2, 3])\r\nprint(\"J\u00e4rjendi suurus: \", x.size)<\/pre>\r\n<pre><span style=\"color: #3366ff\"><strong>&gt;&gt;&gt;<\/strong><\/span> <span style=\"color: #999999\">%Run guido.py<\/span>\r\n  J\u00e4rjendi suurus:\u00a0 3<\/pre>\r\n<h2>J\u00e4rjendi t\u00fc\u00fcbi muutmine<\/h2>\r\nV\u00e4ga lihtsalt saab Numpy j\u00e4rjendi <code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">dtype<\/code> parameetrit kasutades muuta j\u00e4rjendi t\u00fc\u00fcpi. N\u00e4iteks soovime muuta j\u00e4rjendi elemendid ujukomaarvudeks.\r\n<pre>int \u2192 float:<\/pre>\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\" data-enlighter-linenumbers=\"false\">x = np.array([1, 2, 3], dtype=float)\r\nprint(x)<\/pre>\r\n<pre><span style=\"color: #3366ff\"><strong>&gt;&gt;&gt;<\/strong><\/span> <span style=\"color: #999999\">%Run guido.py<\/span>\r\n  [1. 2. 3.]<\/pre>\r\n<pre>float \u2192 bool:<\/pre>\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\" data-enlighter-linenumbers=\"false\">x = np.array([1., 0., 6.], dtype=bool)\r\nprint(x)<\/pre>\r\n<pre><span style=\"color: #3366ff\"><strong>&gt;&gt;&gt;<\/strong><\/span> <span style=\"color: #999999\">%Run guido.py<\/span>\r\n  [True False True]<\/pre>\r\n<span style=\"background-color: #f1c232\">\u00a0! <\/span><span style=\"background-color: #fff2cc\">\u00a0Arv 0 on alati False, \u00fclej\u00e4\u00e4nud arvud on alati <code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">True<\/code>.<\/span>\r\n\r\nSamanimelise funktsiooni abil saab ka j\u00e4rjendi t\u00fc\u00fcbi teada.\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\" data-enlighter-linenumbers=\"false\">x = np.array([1, 2, 3, 4])\r\nprint(x.dtype)<\/pre>\r\n<pre><span style=\"color: #3366ff\"><strong>&gt;&gt;&gt;<\/strong><\/span> <span style=\"color: #999999\">%Run guido.py<\/span>\r\n  int64<\/pre>\r\nJ\u00e4rjend <code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">x<\/code> on t\u00e4isarvu t\u00fc\u00fcpi, mille suurus on 64-bitti, mida t\u00e4histatakse int64. See t\u00e4hendab seda, et j\u00e4rjendi elemendid v\u00f5ivad olla t\u00e4isarvud vahemikust -9223372036854775808 kuni 9223372036854775807 (-2<sup>63 <\/sup>kuni 2<sup>63<\/sup>-1). T\u00e4isarvud v\u00f5ivad olla ka 32-bitised (int32). Kuna suuremahuliste andmete t\u00f6\u00f6tlemisel on oluline ka ressursside haldamine nagu arvuti m\u00e4lu jne, siis saab t\u00fc\u00fcpide koode kasutades t\u00e4pselt m\u00e4\u00e4rata, kui palju m\u00e4lu ressurssi v\u00f5ivad andmed kasutada ja sellep\u00e4rast lisatakse sageli ka suurus juurde.\r\n\r\nSelleks, et t\u00e4psemalt m\u00e4\u00e4rata andmet\u00fc\u00fcbi suurus, kasutatakse NumPy j\u00e4rjendi t\u00fc\u00fcpidena ka spetsiaalsed s\u00f5nena esitatavaid t\u00fc\u00fcpide koode. Koodi esimene t\u00e4ht on vastava t\u00fc\u00fcbi kood ja teine arv, mis t\u00e4histab selle suurust bittides (v. a UNICODE). M\u00f5ned neist on toodud j\u00e4rgnevas tabelis.\r\n<div align=\"left\">\r\n<table class=\"grid aligncenter\" style=\"border: 2px solid #ebebeb\">\r\n<tbody>\r\n<tr>\r\n<td style=\"text-align: center;border: 2px solid #ebebeb\"><strong>Kood<\/strong><\/td>\r\n<td style=\"text-align: center;border: 2px solid #ebebeb\"><strong>T\u00e4hendus<\/strong><\/td>\r\n<\/tr>\r\n<tr>\r\n<td style=\"border: 2px solid #ebebeb\"><code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">'i4'<\/code><\/td>\r\n<td style=\"border: 2px solid #ebebeb\">32-bitine t\u00e4isarv<\/td>\r\n<\/tr>\r\n<tr>\r\n<td style=\"border: 2px solid #ebebeb\"><code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">'f8'<\/code><\/td>\r\n<td style=\"border: 2px solid #ebebeb\">64-bitine ujukomaarv<\/td>\r\n<\/tr>\r\n<tr>\r\n<td style=\"border: 2px solid #ebebeb\"><code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">'S24'<\/code><\/td>\r\n<td style=\"border: 2px solid #ebebeb\">24-biti pikkune s\u00f5ne<\/td>\r\n<\/tr>\r\n<tr>\r\n<td style=\"border: 2px solid #ebebeb\"><code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">'U25'<\/code><\/td>\r\n<td style=\"border: 2px solid #ebebeb\">25-UNICODE t\u00e4hem\u00e4rgi pikkune s\u00f5ne<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n<\/div>\r\n&nbsp;\r\n\r\nN\u00e4iteks loome j\u00e4rjendi, mille elemendid on 64-bitised ujukomaarvud.\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\" data-enlighter-linenumbers=\"false\">x = np.array([1, 2, 3], dtype=\"f8\")\r\nprint(x)<\/pre>\r\n<pre><span style=\"color: #3366ff\"><strong>&gt;&gt;&gt;<\/strong><\/span> <span style=\"color: #999999\">%Run guido.py<\/span>\r\n  [1. 2. 3.]<\/pre>\r\nEriti kasulik on esitatud t\u00fc\u00fcpide koode kasutada siis, kui anal\u00fc\u00fcsitakse andmetabelit, milles on erinevat t\u00fc\u00fcpi andmeid, nii teksti kui ka arve. T\u00e4psemalt vaata peat\u00fcki <em>Kahem\u00f5\u00f5tmelised j\u00e4rjendid<\/em> alapeat\u00fckki <em>CSV failist lugemine<\/em>.\r\n\r\nKui on vaja muuta juba olemasoleva j\u00e4rjendi t\u00fc\u00fcpi, siis seda saab teha, kasutades <code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">astype<\/code> funktsiooni.\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\" data-enlighter-linenumbers=\"false\">x = np.array([1, 2, 3])\r\ny = x.astype(bool)\r\nprint(y)<\/pre>\r\n<pre><span style=\"color: #3366ff\"><strong>&gt;&gt;&gt;<\/strong><\/span> <span style=\"color: #999999\">%Run guido.py<\/span>\r\n  [ True\u00a0 True\u00a0 True]<\/pre>\r\n&nbsp;","rendered":"<p>Sageli on vaja anal\u00fc\u00fcsida andmetabeli \u00fcht veergu v\u00f5i rida, n\u00e4iteks leida veeru aritmeetiline keskmine. Selleks saab kasutada NumPy \u00fchem\u00f5\u00f5tmelised j\u00e4rjendeid.<\/p>\n<h2>J\u00e4rjendi loomine<\/h2>\n<p>K\u00f5igepealt proovime NumPy abil luua \u00fchem\u00f5\u00f5tmelisi j\u00e4rjendeid. NumPy kasutamiseks, peab selle Pythonis importima k\u00e4suga <code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">import numpy as np<\/code>, kus <code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">np<\/code> on levinud l\u00fchend selle mooduli kasutamiseks. Programmis ei pea pikalt kirjutama v\u00e4lja <code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">numpy<\/code>, vaid saab kasutada l\u00fchendit <code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">np<\/code>. J\u00e4rjendi saab NumPy abil luua <code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">array<\/code> funktsiooni kasutades. V\u00f5rreldes tavalise Pythoniga, kus j\u00e4rjendi elemendid lisatakse nurksulgude vahele, on NumPy erinev. NumPy puhul kasutatakse j\u00e4rjendit <code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">array<\/code> funktsiooni argumendina ehk <code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">np.array(j\u00e4rjend)<\/code>.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-linenumbers=\"false\" data-enlighter-theme=\"bootstrap4\"># NumPy j\u00e4rjendi loomine ja v\u00e4ljastamine\r\nimport numpy as np\r\n\r\nx = np.array([1, 2, 3])\r\nprint(x)<\/pre>\n<pre><span style=\"color: #3366ff\"><strong>&gt;&gt;&gt;<\/strong><\/span> <span style=\"color: #999999\">%Run guido.py<\/span>\r\n  [1 2 3]<\/pre>\n<p><span style=\"background-color: #f1c232\">\u00a0! <\/span><span style=\"background-color: #fff2cc\">\u00a0NumPy programmis puuduvad j\u00e4rjendi v\u00e4ljastamisel elementide vahel komad, n\u00e4iteks [1 2 3].<\/span><\/p>\n<p>Lisaks on v\u00f5imalik luua j\u00e4rjend <code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">arange<\/code> funktsiooni kasutades, mis on v\u00e4ga sarnane <code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">range<\/code> funktsiooniga, kus esimene parameeter on sammu algus, teine sammu l\u00f5pp ja kolmas on sammu pikkus. Ka <code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">arange<\/code> funktsiooni puhul ei kuulu sammu l\u00f5pp loodud j\u00e4rjendi elementide hulka.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\" data-enlighter-linenumbers=\"false\">x = np.arange(5)\r\nprint(x)<\/pre>\n<pre><span style=\"color: #3366ff\"><strong>&gt;&gt;&gt;<\/strong><\/span> <span style=\"color: #999999\">%Run guido.py<\/span>\r\n  [0 1 2 3 4]<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\" data-enlighter-linenumbers=\"false\">x = np.arange(1, 10, 2)\r\nprint(x)<\/pre>\n<pre><span style=\"color: #3366ff\"><strong>&gt;&gt;&gt;<\/strong><\/span> <span style=\"color: #999999\">%Run guido.py<\/span>\r\n  [1 3 5 7 9]<\/pre>\n<p>Erinevalt tavalisest Pythoni <code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">range<\/code> funktsioonist, mille argumendid peavad olema t\u00e4isarvud,\u00a0 v\u00f5ivad <code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">arange<\/code> funktsiooni argumentideks olla ka ujukomaarvud.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\" data-enlighter-linenumbers=\"false\">x = np.arange(0, 3.5, 0.4)\r\nprint(x)<\/pre>\n<pre><span style=\"color: #3366ff\"><strong>&gt;&gt;&gt;<\/strong><\/span> <span style=\"color: #999999\">%Run guido.py<\/span>\r\n  [0.\u00a0 0.4 0.8 1.2 1.6 2.\u00a0 2.4 2.8 3.2]<\/pre>\n<p><span style=\"background-color: #f1c232\">\u00a0! <\/span><span style=\"background-color: #fff2cc\">\u00a0Numpy j\u00e4rjendis ei kuvata v\u00e4ljastamisel nulle koma j\u00e4rel.<\/span><\/p>\n<p>Lisaks saab luua j\u00e4rjendeid kasutades <code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">linspace<\/code> funktsiooni, mis v\u00f5ib olla eriti kasulik jooniste loomisel. Selle funktsiooni abil saab luua j\u00e4rjendi, milles on teatud arv elemente mingist vahemikust \u00fchtlase intervalli j\u00e4rgi. N\u00e4iteks tahame, et j\u00e4rjendis oleks 5 arvu l\u00f5igust 0-10 ja need arvud on v\u00f5rdsel kaugusel \u00fcksteisest arvteljel.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\" data-enlighter-linenumbers=\"false\">x = np.linspace(0, 10, num=5)\r\nprint(x)<\/pre>\n<pre><span style=\"color: #3366ff\"><strong>&gt;&gt;&gt;<\/strong><\/span> <span style=\"color: #999999\">%Run guido.py<\/span>\r\n  [ 0. \u00a0 2.5\u00a0 5. \u00a0 7.5 10. ]<\/pre>\n<div id=\"h5p-28\">\n<div class=\"h5p-iframe-wrapper\"><iframe id=\"h5p-iframe-28\" class=\"h5p-iframe\" data-content-id=\"28\" style=\"height:1px\" src=\"about:blank\" frameBorder=\"0\" scrolling=\"no\" title=\"NumPy \u00fchem\u00f5\u00f5tmelise j\u00e4rjendi v\u00e4ljund\"><\/iframe><\/div>\n<\/div>\n<h2>J\u00e4rjendi suurus<\/h2>\n<p>J\u00e4rjendi suuruse leidmine on sarnane Pythonile. Kui Pythonis on k\u00e4sk <code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">len(j\u00e4rjend)<\/code>, siis NumPys kasutatakse funktsiooni <code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">size<\/code> ja n\u00e4eb see v\u00e4lja nii (olgu j\u00e4rjendi nimi <code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">x<\/code>):<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\" data-enlighter-linenumbers=\"false\"># NumPy j\u00e4rjendi elementide arvu leidmine ja v\u00e4ljastamine\r\n\r\nx = np.array([1, 2, 3])\r\nprint(\"J\u00e4rjendi suurus: \", x.size)<\/pre>\n<pre><span style=\"color: #3366ff\"><strong>&gt;&gt;&gt;<\/strong><\/span> <span style=\"color: #999999\">%Run guido.py<\/span>\r\n  J\u00e4rjendi suurus:\u00a0 3<\/pre>\n<h2>J\u00e4rjendi t\u00fc\u00fcbi muutmine<\/h2>\n<p>V\u00e4ga lihtsalt saab Numpy j\u00e4rjendi <code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">dtype<\/code> parameetrit kasutades muuta j\u00e4rjendi t\u00fc\u00fcpi. N\u00e4iteks soovime muuta j\u00e4rjendi elemendid ujukomaarvudeks.<\/p>\n<pre>int \u2192 float:<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\" data-enlighter-linenumbers=\"false\">x = np.array([1, 2, 3], dtype=float)\r\nprint(x)<\/pre>\n<pre><span style=\"color: #3366ff\"><strong>&gt;&gt;&gt;<\/strong><\/span> <span style=\"color: #999999\">%Run guido.py<\/span>\r\n  [1. 2. 3.]<\/pre>\n<pre>float \u2192 bool:<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\" data-enlighter-linenumbers=\"false\">x = np.array([1., 0., 6.], dtype=bool)\r\nprint(x)<\/pre>\n<pre><span style=\"color: #3366ff\"><strong>&gt;&gt;&gt;<\/strong><\/span> <span style=\"color: #999999\">%Run guido.py<\/span>\r\n  [True False True]<\/pre>\n<p><span style=\"background-color: #f1c232\">\u00a0! <\/span><span style=\"background-color: #fff2cc\">\u00a0Arv 0 on alati False, \u00fclej\u00e4\u00e4nud arvud on alati <code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">True<\/code>.<\/span><\/p>\n<p>Samanimelise funktsiooni abil saab ka j\u00e4rjendi t\u00fc\u00fcbi teada.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\" data-enlighter-linenumbers=\"false\">x = np.array([1, 2, 3, 4])\r\nprint(x.dtype)<\/pre>\n<pre><span style=\"color: #3366ff\"><strong>&gt;&gt;&gt;<\/strong><\/span> <span style=\"color: #999999\">%Run guido.py<\/span>\r\n  int64<\/pre>\n<p>J\u00e4rjend <code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">x<\/code> on t\u00e4isarvu t\u00fc\u00fcpi, mille suurus on 64-bitti, mida t\u00e4histatakse int64. See t\u00e4hendab seda, et j\u00e4rjendi elemendid v\u00f5ivad olla t\u00e4isarvud vahemikust -9223372036854775808 kuni 9223372036854775807 (-2<sup>63 <\/sup>kuni 2<sup>63<\/sup>-1). T\u00e4isarvud v\u00f5ivad olla ka 32-bitised (int32). Kuna suuremahuliste andmete t\u00f6\u00f6tlemisel on oluline ka ressursside haldamine nagu arvuti m\u00e4lu jne, siis saab t\u00fc\u00fcpide koode kasutades t\u00e4pselt m\u00e4\u00e4rata, kui palju m\u00e4lu ressurssi v\u00f5ivad andmed kasutada ja sellep\u00e4rast lisatakse sageli ka suurus juurde.<\/p>\n<p>Selleks, et t\u00e4psemalt m\u00e4\u00e4rata andmet\u00fc\u00fcbi suurus, kasutatakse NumPy j\u00e4rjendi t\u00fc\u00fcpidena ka spetsiaalsed s\u00f5nena esitatavaid t\u00fc\u00fcpide koode. Koodi esimene t\u00e4ht on vastava t\u00fc\u00fcbi kood ja teine arv, mis t\u00e4histab selle suurust bittides (v. a UNICODE). M\u00f5ned neist on toodud j\u00e4rgnevas tabelis.<\/p>\n<div style=\"text-align: left;\">\n<table class=\"grid aligncenter\" style=\"border: 2px solid #ebebeb\">\n<tbody>\n<tr>\n<td style=\"text-align: center;border: 2px solid #ebebeb\"><strong>Kood<\/strong><\/td>\n<td style=\"text-align: center;border: 2px solid #ebebeb\"><strong>T\u00e4hendus<\/strong><\/td>\n<\/tr>\n<tr>\n<td style=\"border: 2px solid #ebebeb\"><code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">'i4'<\/code><\/td>\n<td style=\"border: 2px solid #ebebeb\">32-bitine t\u00e4isarv<\/td>\n<\/tr>\n<tr>\n<td style=\"border: 2px solid #ebebeb\"><code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">'f8'<\/code><\/td>\n<td style=\"border: 2px solid #ebebeb\">64-bitine ujukomaarv<\/td>\n<\/tr>\n<tr>\n<td style=\"border: 2px solid #ebebeb\"><code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">'S24'<\/code><\/td>\n<td style=\"border: 2px solid #ebebeb\">24-biti pikkune s\u00f5ne<\/td>\n<\/tr>\n<tr>\n<td style=\"border: 2px solid #ebebeb\"><code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">'U25'<\/code><\/td>\n<td style=\"border: 2px solid #ebebeb\">25-UNICODE t\u00e4hem\u00e4rgi pikkune s\u00f5ne<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>&nbsp;<\/p>\n<p>N\u00e4iteks loome j\u00e4rjendi, mille elemendid on 64-bitised ujukomaarvud.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\" data-enlighter-linenumbers=\"false\">x = np.array([1, 2, 3], dtype=\"f8\")\r\nprint(x)<\/pre>\n<pre><span style=\"color: #3366ff\"><strong>&gt;&gt;&gt;<\/strong><\/span> <span style=\"color: #999999\">%Run guido.py<\/span>\r\n  [1. 2. 3.]<\/pre>\n<p>Eriti kasulik on esitatud t\u00fc\u00fcpide koode kasutada siis, kui anal\u00fc\u00fcsitakse andmetabelit, milles on erinevat t\u00fc\u00fcpi andmeid, nii teksti kui ka arve. T\u00e4psemalt vaata peat\u00fcki <em>Kahem\u00f5\u00f5tmelised j\u00e4rjendid<\/em> alapeat\u00fckki <em>CSV failist lugemine<\/em>.<\/p>\n<p>Kui on vaja muuta juba olemasoleva j\u00e4rjendi t\u00fc\u00fcpi, siis seda saab teha, kasutades <code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">astype<\/code> funktsiooni.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\" data-enlighter-linenumbers=\"false\">x = np.array([1, 2, 3])\r\ny = x.astype(bool)\r\nprint(y)<\/pre>\n<pre><span style=\"color: #3366ff\"><strong>&gt;&gt;&gt;<\/strong><\/span> <span style=\"color: #999999\">%Run guido.py<\/span>\r\n  [ True\u00a0 True\u00a0 True]<\/pre>\n<p>&nbsp;<\/p>\n","protected":false},"author":16,"menu_order":2,"template":"","meta":{"pb_show_title":"on","pb_short_title":"","pb_subtitle":"","pb_authors":[],"pb_section_license":""},"chapter-type":[],"contributor":[],"license":[],"class_list":["post-138","chapter","type-chapter","status-publish","hentry"],"part":90,"_links":{"self":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/pressbooks\/v2\/chapters\/138","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/pressbooks\/v2\/chapters"}],"about":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/wp\/v2\/types\/chapter"}],"author":[{"embeddable":true,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/wp\/v2\/users\/16"}],"version-history":[{"count":19,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/pressbooks\/v2\/chapters\/138\/revisions"}],"predecessor-version":[{"id":590,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/pressbooks\/v2\/chapters\/138\/revisions\/590"}],"part":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/pressbooks\/v2\/parts\/90"}],"metadata":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/pressbooks\/v2\/chapters\/138\/metadata\/"}],"wp:attachment":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/wp\/v2\/media?parent=138"}],"wp:term":[{"taxonomy":"chapter-type","embeddable":true,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/pressbooks\/v2\/chapter-type?post=138"},{"taxonomy":"contributor","embeddable":true,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/wp\/v2\/contributor?post=138"},{"taxonomy":"license","embeddable":true,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/wp\/v2\/license?post=138"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}