datacamp:numpy知識(shí)點(diǎn)
3.look though 這個(gè)np.array

4.? 隨機(jī)創(chuàng)建data

目錄
1-7. 入門
8.? ? 創(chuàng)建數(shù)組
9.? ? np.reshape()
10.? ?將多維數(shù)組轉(zhuǎn)為一維數(shù)組
11.? 算術(shù)運(yùn)算
12.?numpy 中數(shù)組和矩陣的區(qū)別
numpy入門
1. numpy的主要操作對(duì)象是同類型的多維數(shù)組。
它是一個(gè)由正整數(shù)元組索引,元素類型相同的表(通常元素是數(shù)字)。在 numpy維度被稱為?axes,?axes?的數(shù)量稱為?rank。
2. numpy的數(shù)組類是ndarray,也可以叫array
3.ndarray.ndim
數(shù)組的?axes?(維數(shù))數(shù)值大小。
4.ndarray.shape
數(shù)組的維數(shù),這是由每個(gè)維度的大小組成的一個(gè)元組。對(duì)于一個(gè) n行 m 列的矩陣。shape?是?(n, m)。由?shape?元組的長(zhǎng)度得出?rank?或者維數(shù)?ndim。
5.ndarray.size
數(shù)組元素的個(gè)數(shù)總和,這等于?shape?元組數(shù)字的乘積。
6.ndarray.dtype
在數(shù)組中描述元素類型的一個(gè)對(duì)象.它是一種可以用標(biāo)準(zhǔn)的python類型創(chuàng)建和指定的類型。eg:numpy.int32,numpy.int16,numpy.float64……
7.ndarray.itemsize
數(shù)組中每個(gè)元素所占字節(jié)數(shù)。
8.創(chuàng)建數(shù)組
8.1 用array創(chuàng)建一維數(shù)組
創(chuàng)建的數(shù)組類型是從原始序列中的元素推斷出來(lái)的。

8.2 用array創(chuàng)建高維數(shù)組


8.3 用占位符創(chuàng)建
8.3.1 np.zeros()
創(chuàng)建一個(gè)全是0的數(shù)組

ps: np.zeros_like()生成相同形狀的全0數(shù)組

8.3.2?np.ones
創(chuàng)建全是1的數(shù)組

8.3.3 np.empty()
empty?創(chuàng)建一個(gè)隨機(jī)的數(shù)組。默認(rèn)創(chuàng)建數(shù)組的類型是?float64

8.4 用arrange創(chuàng)建數(shù)組
np.arrange() 來(lái)表示取值范圍

8.5 用np.linspace 來(lái)創(chuàng)建數(shù)組 等差數(shù)列
當(dāng)?arange?的參數(shù)是浮點(diǎn)型的,由于有限的浮點(diǎn)精度,通常不太可能去預(yù)測(cè)獲得元素的數(shù)量。出于這個(gè)原因,通常選擇更好的函數(shù)?linspace,他接收我們想要的元素?cái)?shù)量而不是步長(zhǎng)作為參數(shù)。
類似arange,linspace從[start , stop ] 生成num個(gè)數(shù),Num個(gè)數(shù)間隔相等。(默認(rèn)為float)
linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)

8.6?np.random.rand()隨機(jī)生成取值在(0,1)的數(shù)組

8.7 np.random.randit() 產(chǎn)生隨機(jī)整數(shù)
numpy.random.randint(low, high=None, size=None, dtype='l')
8.8?np.random.choice ()
# 參數(shù)意思分別 是從a 中以概率P,隨機(jī)選擇3個(gè), p沒(méi)有指定的時(shí)候相當(dāng)于是一致的分布
a1 = np.random.choice(a=5, size=3, replace=False, p=None)
print(a1)
# 非一致的分布,會(huì)以多少的概率提出來(lái)
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的話,那么出來(lái)的三個(gè)數(shù)都不一樣,如果是True的話, 有可能會(huì)出現(xiàn)重復(fù)的,因?yàn)榍懊娴某榈姆呕厝チ恕?/p>
https://blog.csdn.net/qfpkzheng/article/details/79061601
8.9?numpy.random.sample
返回一個(gè)隨機(jī)數(shù)組,取值在(0,1)之間
numpy.random.sample(size=None)
參數(shù):
size:?int or tuple of ints, optional 可以是整數(shù)或者元組
Output shape. If the given shape is, e.g.,?(m,?n,?k), then?m?*?n?*?k?samples are drawn
如果size輸入的是元組形式,返回的是多維數(shù)組
numpy.random.sample — NumPy v1.16 Manual
8.10??numpy.random.randn()
numpy.random.randn(d0,d1,…,dn)
randn函數(shù)返回一個(gè)或一組樣本,具有標(biāo)準(zhǔn)正態(tài)分布。
dn表格每個(gè)維度
返回值為指定維度的array

ps:標(biāo)準(zhǔn)正態(tài)分布又稱為u分布,是以0為均值、以1為標(biāo)準(zhǔn)差的正態(tài)分布,記為N(0,1)
https://blog.csdn.net/u012149181/article/details/78913167
8.11 np.logspace()
創(chuàng)建等比數(shù)列
8.12 np.fromstring()
9. 修改數(shù)組的形狀
9.1 np.reshape()?
將一維的數(shù)據(jù)轉(zhuǎn)為多維的

9.2 數(shù)組的轉(zhuǎn)置transposed

9.3 np.resize()
reshape函數(shù)返回修改的形狀,而 resize方法直接修改數(shù)組本身。

10.將多維數(shù)組轉(zhuǎn)為一維數(shù)組np.ravel()? ? ?np.flatten()? ? ? ?np.squeeze()
numpy中的ravel()、flatten()、squeeze()都有將多維數(shù)組轉(zhuǎn)換為一維數(shù)組的功能,區(qū)別:
ravel():如果沒(méi)有必要,不會(huì)產(chǎn)生源數(shù)據(jù)的副本
flatten():返回源數(shù)據(jù)的副本
squeeze():只能對(duì)維數(shù)為1的維度降維
另外,reshape(-1)也可以“拉平”多維數(shù)組
11.numpy中的算數(shù)計(jì)算
11.1 四則運(yùn)算
+’,’-‘,’*’,’/’運(yùn)算都是基于全部的數(shù)組元素的
11.1.1 * vs np.dot() vs np.multiply()? 不同 見13
https://blog.csdn.net/zenghaitao0128/article/details/78715140
11.2?開根號(hào)/指數(shù)??universal functions??
還包含 sin cos?

11.3 += 和 *=
直接在原數(shù)組上做修改,不會(huì)創(chuàng)建新數(shù)組。

11.4 聚合運(yùn)算
還有mean() median()

ps:?numpy.ptp(a, axis=None, out=None)? ?返回最大和最小值之差
11.5 二元ufunc

11.6 數(shù)組的集合運(yùn)算

11.7 numpy.linalg() 常用計(jì)算函數(shù)

12. numpy 中數(shù)組和矩陣的區(qū)別
1. Numpy matrices必須是2維的,但是 numpy arrays (ndarrays) 可以是多維的(1D,2D,3D····ND). Matrix是Array的一個(gè)小的分支,包含于Array。所以matrix 擁有array的所有特性。
2. 在numpy中matrix的主要優(yōu)勢(shì)是:相對(duì)簡(jiǎn)單的乘法運(yùn)算符號(hào)。例如,a和b是兩個(gè)matrices,那么a*b,就是矩陣積。
3. matrix 和 array 都可以通過(guò)objects后面加.T 得到其轉(zhuǎn)置。但是 matrix objects 還可以在后面加 .H f得到共軛矩陣, 加 .I 得到逆矩陣。
4. 相反的是在numpy里面arrays遵從逐個(gè)元素的運(yùn)算,所以array:c 和d的c*d運(yùn)算相當(dāng)于matlab里面的c.*d運(yùn)算。而矩陣相乘,則需要numpy里面的dot命令 。
https://blog.csdn.net/wyl1813240346/article/details/79806207
13.?* vs np.dot() vs np.multiply()? 區(qū)別
數(shù)組的?*?操作不像其他的矩陣語(yǔ)言。矩陣乘法通過(guò)?dot?函數(shù)進(jìn)行模擬
13.1 np.multiply()用法
數(shù)組和矩陣對(duì)應(yīng)位置相乘,輸出與相乘數(shù)組/矩陣的大小一致
13.1.1 數(shù)組

13.1.2 矩陣

13.2 np.dot() 用法
對(duì)于秩為1的數(shù)組,執(zhí)行對(duì)應(yīng)位置相乘,然后再相加;
對(duì)于秩不為1的二維數(shù)組,執(zhí)行矩陣乘法運(yùn)算;超過(guò)二維的可以參考numpy庫(kù)介紹。
13.2.1 一維數(shù)組

13.2.2 二維數(shù)組

13.3 * 的用法
對(duì)數(shù)組執(zhí)行對(duì)應(yīng)位置相乘
對(duì)矩陣執(zhí)行矩陣乘法運(yùn)算
13.3.1 數(shù)組 *

13.3.2 矩陣

14.?索引,切片和迭代
14.1 一維數(shù)組
一維數(shù)組可以被索引,切片和迭代,就像列表和其他Python序列一樣。


14.2 二維數(shù)組

14.3 多維數(shù)組 三維數(shù)組 用... 查詢數(shù)組

15. 數(shù)組的組合拼接
使用hstack 橫向拼接
使用vstack 縱向拼接

16.數(shù)組的拷貝
不同的數(shù)組對(duì)象可以分享相同的數(shù)據(jù)。view?方法創(chuàng)建了一個(gè)相同數(shù)據(jù)的新數(shù)組對(duì)象。 淺拷貝
想要真正的復(fù)制一份a給b,可以使用copy.? 深拷貝

17.numpy中的函數(shù)

18. numpy中的矩陣
矩陣與數(shù)組有不同,矩陣最多是2維的
18.1 矩陣的創(chuàng)建

18.2 矩陣的乘法
np.multiply()
(*)
18.3 矩陣的轉(zhuǎn)置 .T()

18.4 矩陣求逆nlg.inv()

18.5 特征向量
ps:忘記特征向量怎么求了?
先占著坑
pass
19. np.meshgrid()用法
meshgrid(*xi, **kwargs)
功能:從一個(gè)坐標(biāo)向量中返回一個(gè)坐標(biāo)矩陣
20.np.cumsum()
numpy.cumsum(a, axis=None, dtype=None, out=None)
axis=0,按照行累加。
axis=1,按照列累加。
axis不給定具體值,就把numpy數(shù)組當(dāng)成一個(gè)一維數(shù)組。

自動(dòng)轉(zhuǎn)換成一維數(shù)組,按照行累加
21.np.where()用法
21.1 np.where(condition, x, y)
滿足條件(condition),輸出x,不滿足輸出y。

21.2?np.where(condition)
只有條件 (condition),沒(méi)有x和y,則輸出滿足條件 (即非0) 元素的坐標(biāo) (等價(jià)于numpy.nonzero)。這里的坐標(biāo)以tuple的形式給出,通常原數(shù)組有多少維,輸出的tuple中就包含幾個(gè)數(shù)組,分別對(duì)應(yīng)符合條件元素的各維坐標(biāo)。
21.3 利用where 修改數(shù)組的值

22.利用set去重?

23.?np.concatenate
numpy.concatenate((a1,?a2,?...),?axis=0,?out=None)

24. np.meshgrid()
meshgrid(*xi, **kwargs)
從一個(gè)坐標(biāo)向量中返回一個(gè)坐標(biāo)矩陣
參數(shù):
x1,x2...,xn:數(shù)組,一維的數(shù)組代表網(wǎng)格的坐標(biāo)。
indexing:{'xy','ij'},笛卡爾坐標(biāo)'xy'或矩陣'ij'下標(biāo)作為輸出,默認(rèn)的是笛卡爾坐標(biāo)。
sparse:bool類型,如果為True,返回一個(gè)稀疏矩陣保存在內(nèi)存中,默認(rèn)是False。
copy:bool類型,如果是False,返回一個(gè)原始數(shù)組的視圖保存在內(nèi)存中,默認(rèn)是True。如果,sparse和copy都為False,將有可能返回一個(gè)不連續(xù)的數(shù)組。而且,如果廣播數(shù)組的元素超過(guò)一個(gè),可以使用一個(gè)獨(dú)立的內(nèi)存。如果想要對(duì)這個(gè)數(shù)組進(jìn)行寫操作,請(qǐng)先拷貝這個(gè)數(shù)組。
返回值:x1,x2,....,xn:ndarray(numpy數(shù)組)
numpy中的meshgrid函數(shù) - 修煉之路 - CSDN博客
reference:
python 科學(xué)計(jì)算 — numpy 學(xué)習(xí)筆記 - 細(xì)語(yǔ)呢喃
https://blog.csdn.net/sinat_29957455/article/details/78825945
