關於numpy的一些矩陣運算 tile函式

2021-08-15 09:48:07 字數 1286 閱讀 4388

參考:

假如現在我們有乙個向量y =[1,0,1]和乙個矩陣x =[[1,2,3], [4,5,6], [7,8,9], [10, 11, 12]],我們的目的就是求解x的每乙個行向量和y向量的和。那麼我們該如何求解呢?

由於x,y不是同型矩陣,所以是不能直接相加的。但是我們可以把每個行向量與y相加,也就是如下的程式。如果我們不計效率的話,這樣做當然沒有問題。

import numpy as np

x = np.array([[1,2,3],[4,5,6],[7,8,9],[10,11,12]])

y =np.array([1,0,1])

#z用來儲存結果

z = np.zeros(x.shape,dtype=np.int64)

for i in range(4):

z[i,:]=x[i,:]+y

顯然上面的程式很中規中矩,但是在numpy中還有更好的實現方法,就是tile函式。

其函式格式為tile(a,reps)。a是要擴充套件的目標矩陣,reps指明維度資訊。意即把a按規律填充成x的同型矩陣。

y =np.array([1,0,1])

#y1就是:

# 1 0 1 1 0 1

# 1 0 1 1 0 1

# 1 0 1 1 0 1

# 1 0 1 1 0 1

y1=np.tile(y,[3,2])

可以看出tile函式把y向量看成乙個整體,而後面的維度資訊,第乙個表示行方向上擴充套件後的矩陣是原來的3倍,第二個表示列方向上擴充套件後的矩陣是原來的2倍。

y =np.array([1,0,1])

#array([1, 0, 1, 1, 0, 1, 1, 0, 1])

y1 = np.tile(y,3)

#

#array([[1, 0, 1],

# [1, 0, 1],

# [1, 0, 1],

# [1, 0, 1]])

y3= np.tile(y,[4,1])

此時你會發現y3和x已經是同型矩陣了。

import numpy as np

x = np.array([[1,2,3],[4,5,6],[7,8,9],[10,11,12]])

y =np.array([1,0,1])

y_1= np.tile(y,[4,1])

re = x+y_1

numpy和torch的一些矩陣運算語句

僅作為記錄,大佬請跳過 矩陣相乘 x w1 numpy h x.dot w1 torch h x.mm w1 大於0的保留,小於0的令為0 達到啟用函式relu的效果 numpy h relu np.maximum h,0 torch h relu h.clamp min 0 兩個陣列相減,相減後各...

一些關於Linux Python vim的tips

data num int sys.argv 1 python getdata.py 10000 ctrl b 檢視歷史輸出記錄 exit 退出檢視歷史模式sshfs user xx.xx.home user data localdata 伺服器上的東西弄個鏈結到本地,mnt umount local...

numpy對於矩陣的一些基本操作

import numpy as np n1 np.array 1,2 3,4 n2 np.array 1,2 3,6 矩陣加矩陣,對應位置相加,但是shape必須相同 也就是必須都是2 2的 print n1 n2 2 4 6 10 矩陣與標量相加,就是將標量挨個加到矩陣元素中去 print n1 ...