datacamp:numpy知識點
3.look though 這個np.array
4.? 隨機創建data
目錄
1-7. 入門
8.? ? 創建數組
9.? ? np.reshape()
10.? ?將多維數組轉為一維數組
11.? 算術運算
12.?numpy 中數組和矩陣的區別
numpy入門
1. numpy的主要操作對象是同類型的多維數組。
它是一個由正整數元組索引,元素類型相同的表(通常元素是數字)。在 numpy維度被稱為?axes,?axes?的數量稱為?rank。
2. numpy的數組類是ndarray,也可以叫array
3.ndarray.ndim
數組的?axes?(維數)數值大小。
4.ndarray.shape
數組的維數,這是由每個維度的大小組成的一個元組。對于一個 n行 m 列的矩陣。shape?是?(n, m)。由?shape?元組的長度得出?rank?或者維數?ndim。
5.ndarray.size
數組元素的個數總和,這等于?shape?元組數字的乘積。
6.ndarray.dtype
在數組中描述元素類型的一個對象.它是一種可以用標準的python類型創建和指定的類型。eg:numpy.int32,numpy.int16,numpy.float64……
7.ndarray.itemsize
數組中每個元素所占字節數。
8.創建數組
8.1 用array創建一維數組
創建的數組類型是從原始序列中的元素推斷出來的。
8.2 用array創建高維數組
8.3 用占位符創建
8.3.1 np.zeros()
創建一個全是0的數組
ps: np.zeros_like()生成相同形狀的全0數組
8.3.2?np.ones
創建全是1的數組
8.3.3 np.empty()
empty?創建一個隨機的數組。默認創建數組的類型是?float64
8.4 用arrange創建數組
np.arrange() 來表示取值范圍
8.5 用np.linspace 來創建數組 等差數列
當?arange?的參數是浮點型的,由于有限的浮點精度,通常不太可能去預測獲得元素的數量。出于這個原因,通常選擇更好的函數?linspace,他接收我們想要的元素數量而不是步長作為參數。
類似arange,linspace從[start , stop ] 生成num個數,Num個數間隔相等。(默認為float)
linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)
8.6?np.random.rand()隨機生成取值在(0,1)的數組
8.7 np.random.randit() 產生隨機整數
numpy.random.randint(low, high=None, size=None, dtype='l')
8.8?np.random.choice ()
# 參數意思分別 是從a 中以概率P,隨機選擇3個, p沒有指定的時候相當于是一致的分布
a1 = np.random.choice(a=5, size=3, replace=False, p=None)
print(a1)
# 非一致的分布,會以多少的概率提出來
a2 = np.random.choice(a=5, size=3, replace=False, p=[0.2, 0.1, 0.3, 0.4, 0.0])
print(a2)
# replacement 代表的意思是抽樣之后還放不放回去,如果是False的話,那么出來的三個數都不一樣,如果是True的話, 有可能會出現重復的,因為前面的抽的放回去了。
https://blog.csdn.net/qfpkzheng/article/details/79061601
8.9?numpy.random.sample
返回一個隨機數組,取值在(0,1)之間
numpy.random.sample(size=None)
參數:
size:?int or tuple of ints, optional 可以是整數或者元組
Output shape. If the given shape is, e.g.,?(m,?n,?k), then?m?*?n?*?k?samples are drawn
如果size輸入的是元組形式,返回的是多維數組
numpy.random.sample — NumPy v1.16 Manual
8.10??numpy.random.randn()
numpy.random.randn(d0,d1,…,dn)
randn函數返回一個或一組樣本,具有標準正態分布。
dn表格每個維度
返回值為指定維度的array
ps:標準正態分布又稱為u分布,是以0為均值、以1為標準差的正態分布,記為N(0,1)
https://blog.csdn.net/u012149181/article/details/78913167
8.11 np.logspace()
創建等比數列
8.12 np.fromstring()
9. 修改數組的形狀
9.1 np.reshape()?
將一維的數據轉為多維的
9.2 數組的轉置transposed
9.3 np.resize()
reshape函數返回修改的形狀,而 resize方法直接修改數組本身。
10.將多維數組轉為一維數組np.ravel()? ? ?np.flatten()? ? ? ?np.squeeze()
numpy中的ravel()、flatten()、squeeze()都有將多維數組轉換為一維數組的功能,區別:
ravel():如果沒有必要,不會產生源數據的副本
flatten():返回源數據的副本
squeeze():只能對維數為1的維度降維
另外,reshape(-1)也可以“拉平”多維數組
11.numpy中的算數計算
11.1 四則運算
+’,’-‘,’*’,’/’運算都是基于全部的數組元素的
11.1.1 * vs np.dot() vs np.multiply()? 不同 見13
https://blog.csdn.net/zenghaitao0128/article/details/78715140
11.2?開根號/指數??universal functions??
還包含 sin cos?
11.3 += 和 *=
直接在原數組上做修改,不會創建新數組。
11.4 聚合運算
還有mean() median()
ps:?numpy.ptp(a, axis=None, out=None)? ?返回最大和最小值之差
11.5 二元ufunc
11.6 數組的集合運算
11.7 numpy.linalg() 常用計算函數
12. numpy 中數組和矩陣的區別
1. Numpy matrices必須是2維的,但是 numpy arrays (ndarrays) 可以是多維的(1D,2D,3D····ND). Matrix是Array的一個小的分支,包含于Array。所以matrix 擁有array的所有特性。
2. 在numpy中matrix的主要優勢是:相對簡單的乘法運算符號。例如,a和b是兩個matrices,那么a*b,就是矩陣積。
3. matrix 和 array 都可以通過objects后面加.T 得到其轉置。但是 matrix objects 還可以在后面加 .H f得到共軛矩陣, 加 .I 得到逆矩陣。
4. 相反的是在numpy里面arrays遵從逐個元素的運算,所以array:c 和d的c*d運算相當于matlab里面的c.*d運算。而矩陣相乘,則需要numpy里面的dot命令 。
https://blog.csdn.net/wyl1813240346/article/details/79806207
13.?* vs np.dot() vs np.multiply()? 區別
數組的?*?操作不像其他的矩陣語言。矩陣乘法通過?dot?函數進行模擬
13.1 np.multiply()用法
數組和矩陣對應位置相乘,輸出與相乘數組/矩陣的大小一致
13.1.1 數組
13.1.2 矩陣
13.2 np.dot() 用法
對于秩為1的數組,執行對應位置相乘,然后再相加;
對于秩不為1的二維數組,執行矩陣乘法運算;超過二維的可以參考numpy庫介紹。
13.2.1 一維數組
13.2.2 二維數組
13.3 * 的用法
對數組執行對應位置相乘
對矩陣執行矩陣乘法運算
13.3.1 數組 *
13.3.2 矩陣
14.?索引,切片和迭代
14.1 一維數組
一維數組可以被索引,切片和迭代,就像列表和其他Python序列一樣。
14.2 二維數組
14.3 多維數組 三維數組 用... 查詢數組
15. 數組的組合拼接
使用hstack 橫向拼接
使用vstack 縱向拼接
16.數組的拷貝
不同的數組對象可以分享相同的數據。view?方法創建了一個相同數據的新數組對象。 淺拷貝
想要真正的復制一份a給b,可以使用copy.? 深拷貝
17.numpy中的函數
18. numpy中的矩陣
矩陣與數組有不同,矩陣最多是2維的
18.1 矩陣的創建
18.2 矩陣的乘法
np.multiply()
(*)
18.3 矩陣的轉置 .T()
18.4 矩陣求逆nlg.inv()
18.5 特征向量
ps:忘記特征向量怎么求了?
先占著坑
pass
19. np.meshgrid()用法
meshgrid(*xi, **kwargs)
功能:從一個坐標向量中返回一個坐標矩陣
20.np.cumsum()
numpy.cumsum(a, axis=None, dtype=None, out=None)
axis=0,按照行累加。
axis=1,按照列累加。
axis不給定具體值,就把numpy數組當成一個一維數組。
自動轉換成一維數組,按照行累加
21.np.where()用法
21.1 np.where(condition, x, y)
滿足條件(condition),輸出x,不滿足輸出y。
21.2?np.where(condition)
只有條件 (condition),沒有x和y,則輸出滿足條件 (即非0) 元素的坐標 (等價于numpy.nonzero)。這里的坐標以tuple的形式給出,通常原數組有多少維,輸出的tuple中就包含幾個數組,分別對應符合條件元素的各維坐標。
21.3 利用where 修改數組的值
22.利用set去重?
23.?np.concatenate
numpy.concatenate((a1,?a2,?...),?axis=0,?out=None)
24. np.meshgrid()
meshgrid(*xi, **kwargs)
從一個坐標向量中返回一個坐標矩陣
參數:
x1,x2...,xn:數組,一維的數組代表網格的坐標。
indexing:{'xy','ij'},笛卡爾坐標'xy'或矩陣'ij'下標作為輸出,默認的是笛卡爾坐標。
sparse:bool類型,如果為True,返回一個稀疏矩陣保存在內存中,默認是False。
copy:bool類型,如果是False,返回一個原始數組的視圖保存在內存中,默認是True。如果,sparse和copy都為False,將有可能返回一個不連續的數組。而且,如果廣播數組的元素超過一個,可以使用一個獨立的內存。如果想要對這個數組進行寫操作,請先拷貝這個數組。
返回值:x1,x2,....,xn:ndarray(numpy數組)
numpy中的meshgrid函數 - 修煉之路 - CSDN博客
reference:
python 科學計算 — numpy 學習筆記 - 細語呢喃
https://blog.csdn.net/sinat_29957455/article/details/78825945