Numpy庫的學習(五)

2022-08-25 19:42:21 字數 3068 閱讀 9283

今天繼續學習一下numpy庫,廢話不多說,整起走

先說下numpy中,經常會犯錯的地方,就是資料的複製

這個問題不僅僅是在numpy中有,其他地方也同樣會出現

先看看這段**,我們隨便建立了乙個numpy陣列

然後我想把a這個值,賦值給b,很簡單的操作,b = a 

那麼我們列印一下b和a是不相等,返回的結果為true

也就是說,b和a是相等的

那麼我們現在講b做個shape變換

然後在看看a的shape有沒有變換

我們這裡多列印些東西,更容易我們理解

我們看到a 的id,和b 的id 是一樣的,說明a和b,是完全相等的

我改變其中任意乙個,都是改變另外乙個值。實際上a和b指向的都是記憶體中的同乙個位址

我們接著看下面的**

我這裡 定義了乙個c,這個c也是一種複製,淺複製。用view()

我們在看看c 是不是a,返回的結果則是,false,說明,a和c不相等

我們將c.shape變換為2,6

列印一下a.shape發現,a的shape還是3,4

那麼我將c中的乙個值,修改為1234

可以看到,列印出來的a也改變了

讓後通過id發現, 他們兩個不是同乙個位址。但是我修改的時候會做修改

說明,用view()方法複製出來的資料,相當於python中的淺拷貝。

簡單說,就是a和c他們指向的位址不一樣,但是他們公用一組資料。

但是這個view不推薦使用

下面我們接著看

這裡看到,d = a.copy(),a 不是d ,所以列印出來是false

那麼我們讓d 中的 乙個元素變成9999

那麼列印一下a和d 發現,a中沒有變化,d中有變化,也就是說

如果我們想讓乙個變數,的初始值是a,然後在新的上面做一些變化的時候,一定要用copy來做

下面我們在說說argmax

這段**可以看出,我們生成了乙個5行 4列的矩陣。我們定義維度axis = 0 就是按照列進行選擇

列印一下可以看到,第一列中0.98935825這個值是最大的。我們通過列印ind,得到最大的值是矩陣第一列的第3個元素

也就是元素下標為2,那麼第二列中,第乙個元素最大,下標為0,以此類推,得到[2 0 3 1]

按行找的話,需要設定維度axis = 1,即可

我們想取到,沒列中,最大的數是多少,可以使用data_max這種取值方式,將矩陣中按照列排列最大的元素是多少,取出來

看到上面這段**,我們生成乙個向量

然後,通過tile函式,將我們生成的向量傳入進去,讓後按照矩陣進行翻倍變換

得到,4行2列的資料,下面繼續

首先我們使用sort,將我們的a進行了以行為主的排序

我們可以看到,使用np.sort和直接.sort的效果是一樣的

np.argsort,則是求出a的索引值,然後再按照a的索引值進行排序

今天就先說到這裡,感謝各位的閱讀,感謝支援!!謝謝!!

numpy庫的學習

今天開始進行對numpy庫的學習為了以後使用python進行機器學習開闢道路 為了方便在文件開頭可以 import numpy as np 這個函式實際上是 numpy.array object,dtype none,copy true,order none,subok false,ndmin 0 ...

機器學習 numpy庫的學習

import numpy as np import random 處理數值型的資料 使用numpy生成陣列,型別為ndarray t1 np.array 1 2,3 print t1 print type t1 t2 np.array range 10 print t2 full填充元素 np.fu...

Numpy庫的學習(一)

今天來學習一下python庫中,支援高階大量的維度陣列與矩陣運算的神奇的numpy庫 numpy同時也對陣列運算提供大量的數學函式,對於大量計算執行效率極好 是大量機器學習框架的基礎庫 廢話不多說,直接開整 numpy中最核心的結構就是ndarray陣列 numpy中定義的最重要的物件是成為ndar...