第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 Numpy 進行矩陣運算的更簡單方法

使用 Numpy 進行矩陣運算的更簡單方法

三國紛爭 2021-09-24 16:40:19
我有一個這樣的代碼:x = 0for i in range(100):    for j in range(100):        x += f[i, 0] * f[0, j]這f是一個二維數(shù)組。現(xiàn)在,numpy 中是否有可用的函數(shù)可以在不使用 for 循環(huán)的情況下執(zhí)行此操作?
查看完整描述

2 回答

?
慕婉清6462132

TA貢獻1804條經驗 獲得超2個贊

您可以獨立地對第一列和第一行求和,然后取乘積:


res = f[:, 0].sum() * f[0, :].sum()

這里有一些代碼來檢查這是否符合您的期望:


np.random.seed(0)


f = np.random.random((100, 100))


x = 0

for i in range(100):

    for j in range(100):

        x += f[i, 0] * f[0,j]


res = f[:, 0].sum() * f[0, :].sum()


assert np.isclose(x, res)


查看完整回答
反對 回復 2021-09-24
?
慕標琳琳

TA貢獻1830條經驗 獲得超9個贊

是的,您可以使用 NumPy 的outer(). 這基本上是一個外積問題,您只需將結果外積 n*n 矩陣的元素相加即可。在這里,您在矩陣中使用的唯一值是第一行和第一列。


因此,您需要做的就是使用np.outer( docs )取第一行和第一列的外積。這就是您在使用嵌套 for 循環(huán)的算法中所做的一切。


例子


import numpy as np


f = np.random.randint(1, 9, (3, 3)) # Create a test 3x3 matrix 


col = f[:, 0] # first column enteries [5, 3, 8]

row = f[0, :] # first row enteries [5, 3, 4]

summ = np.sum(np.outer(row, col))


print (f)

print ('The sum is %d' %summ)


#[[5 3 4]

# [3 8 1]

# [8 7 2]]


# The sum is 192

hpaulj建議的替代方案是


np.einsum('i,j->', f[:,0], f[0,:])


查看完整回答
反對 回復 2021-09-24
  • 2 回答
  • 0 關注
  • 212 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號