python numpy 注意事項

2021-09-02 22:31:23 字數 1603 閱讀 3147

1、初始化矩陣的時候,如果矩陣為複數,則需要

np.zeros((n,m,l),dtype=complex) 指明矩陣型別,否則賦值的時候會提示complexwarning: casting complex values to real discards the imaginary part

2、矩陣賦值的時候,numpy預設為行向量賦值,這是跟matlab很不一樣的一點

例如:x = np.zeros((n,m),dtype=complex)

a = np.ones((n,1))

這時如果寫x[:,1] = a,則會報錯valueerror: could not broadcast input array from shape (n,1) into shape (n)

相反,如果你對a轉置,變成行向量,再賦值則沒有問題

3、要習慣numpy矩陣索引是從0:n-1的

4、行向量、列向量的關係

a = np.array([1,2,3])       a.shape   輸出   (3,)

b = np.array([[1,2,3]])     b.shape   輸出   (1,3)

c = np.ones((1,3))          c.shape   輸出   (1,3)

d = np.array([[2],[5],[8]]) d.shape   輸出   (3,1)

a+c            輸出array([[2., 3., 4.]])  shape  (1,3)

b+c            輸出array([[2., 3., 4.]])  shape  (1,3)

d+c            輸出array([[3., 3., 3.],    shape (3,3)

[6., 6., 6.],

[9., 9., 9.]])

a+d            輸出array([[ 3,  4,  5],    shape (3,3)

=b+d                           [ 6,  7,  8],

[ 9, 10, 11]])

a+b            輸出array([[2, 4, 6]])      shape(1,3)

結論:1)   a這種size為(3,)的向量其實可以當做行向量來處理,與行向量c相加為行向量,與列向量d相加為矩陣

2)   還有一種情況會出現向量的size是乙個數的,就是從矩陣裡取一列或一行,此時不管是取列還是行,size都是(m,),也就是說都是行向量的形式。此後再利用這個列或者行去做運算,如果結果為向量,那麼這個向量的size都是(m,)這種形式的。

例如:e.shape 是(3,3)  則e[:,2].shape 和 e[1,:].shape 都是(3,)

但是矛盾的是,此時,假設有g = e[1,:] shape為(3,)  如果把g當做行向量的話,把e和g做矩陣乘法,按照線性代數想法是不能運算的,但是卻可以運算

e.dot(g)

out[133]: array([ 86, 149, 212])

e.dot(g).shape

out[134]: (3,)

且shape 為(3,)

java DOM 注意事項

1.w3c把標籤內的文字部分也定義成乙個node 2.element物件代表的是xml文件中的標籤元素 繼承於node,亦是node的最主要的子物件 3.attr實際上是包含在element中的,它並不能被看作是element的子物件,因而在dom中attr並不是dom樹的一部分,所以node中的 ...

static注意事項

static關鍵字是c,c 中都存在的關鍵字,它主要有三種使用方式,其中前兩種只指在c語言中使用,第三種在c 中使用 c,c 中具體細微操作不盡相同,本文以c 為準 1 區域性靜態變數 2 外部靜態變數 函式 3 靜態資料成員 成員函式 下面就這三種使用方式及注意事項分別說明 一 區域性靜態變數 在...

CSS注意事項

一 寬度 高度 對齊方式請別忘記他們 只要你時刻記得 div css 不變形的秘密你已經掌握了 90 也有對齊方式哦!一定要掌握當 對齊方式不同是 布局出現的問題!左右左 能不變形嗎?預設 是要換行的哦 div css的 居中對齊 是有條件的哦 所有當同級元素的對齊方式都為居中對齊的時候可以採用居中...