建立並檢視資料
首先匯入並檢視numpy版本,我的版本是1.17.2,由於版本不同可能有些**寫法不一樣
接著我們來建立乙個陣列
當然我們可以將列表巢狀在列表中建立乙個二維陣列
接下來我們檢視這兩個陣列的維數
ok,和我們預想的一樣,接著我們檢視資料的shape屬性
這個shape不好翻譯,有說是矩陣維數也有說是形狀的,從結果來看a的shape屬性為(3,)意思a是一維陣列,有3個元素,b的shape屬性為(2,3)說明b是二維陣列,每行有3個元素,想一想np.array([[1,2]]).shape應該返回什麼
(1,2)說明該陣列是乙個1行2列的二維陣列,ok我們接著來檢視在第一期中重點介紹的資料型別
可以看到,a是int64說明儲存a將消耗8個位元組,而在第一期我們就說過,使用numpy的好處是可以自定義資料型別,因此我們可以指定a的資料型別為int16來減少記憶體占用
現在我們來看下修改前後a的大小變化(8—>2)
接著我們來獲取一下陣列的元素個數
在知道資料的每個元素大小和元素個數之後我們就可以計算ab的總記憶體占用,即元素個數*元素大小
可以看到儲存a將消耗6個位元組而儲存b將消耗48個位元組,不過也有現成的方法.nbytes可以直接獲取
當然結果是一樣的,現在我們對numpy 陣列中的一些重要的基礎屬性有了一定了解之後我們來學習如何訪問/修改資料。
訪問並修改資料
我們重新建立乙個陣列
可以看到a是乙個2行7列的矩陣,現在我們可以像使用list一樣來訪問a中的元素,比如我們提取第2行的6和2(第二行的第二個和倒數第二個元素)
當然也可以使用類似的方法訪問整行/整列
還有一些其他的方法,比如每隔2個數訪問一次第一行中從第二個資料到第7個資料的兩種寫法
在學會如何訪問numpy陣列中元素之後,現在我們學習修改陣列中元素,比如修改第2行第2列資料
也可以修改一整列資料
上面都是使用一維或二維的資料來示例,如果是更高維的陣列操作是類似的,比如我們建立乙個三維陣列
我們可以使用類似的方法來訪問陣列中的元素
不過修改資料的時候需要保證資料維度是一致的,否則就會報錯
結束語
ok,以上就是numpy高階修煉第二期的全部內容,這些基礎操作你都會嗎?原始碼將在numpy系列完結之後給出,所以想學好numpy的讀者可以自己動手敲一遍,研究一遍。因為從我的經驗來看,敲這一遍**很有可能是你唯一一次將這些numpy基礎操作好好思考一遍。收藏起來等以後再學等著等著就忘記了,更深入的操作我們下期再見,拜拜~
如何建立二維三維陣列
ps 一維陣列是指標,可將二維陣列看作是指標的指標 每一行是乙個一維陣列,而列是指向行的指標。在動態建立時,先分配指向行的指標空間,再迴圈維每一行申請空間。二維 建立 int p p new int x 行 申請行的空間 每行的列申請空間 for i 0 i三維 建立 int p3 p3 new i...
php三維陣列定義,PHP陣列之三維陣列
area array china array 上海 湖北 天津 北京 array hd 海淀 朝陽 房山 cp 昌平 廣東 array 深圳 廣州 佛山 dg 東莞 usa array 華盛頓 舊金山 紐約 array 曼哈頓區 皇后區 布魯克林區 echo var dump area echo 輸...
建立乙個三維陣列
題目 建立乙個三維陣列,4 4 4個元素,數字隨機生成,找出每行最大的數,每面最大的數,以及整個陣列中最大的數的位址,具體實現如下 cpp view plain copy include include include void printmaxvalbyindex int pdata 4 4 in...