[英]How to avoid the "for" loop in python
假設 X 是一個形狀為 (3,8,8) 的 ndarray,而 y 是另一個形狀為 (3,) 的數組。 我想將 X 的每個 (8,8) 切片乘以 y 的一個元素,然后將結果相加。 使用 for 循環,可以按如下方式完成:
import numpy as np
X = np.random.rand(3,8,8)
y = np.random.rand(3)
temp = 0
for k in range(3):
temp = temp+y[k]*X[k,:,:]
有什么辦法可以避免“for”循環嗎? 任何線索表示贊賞。
您是否花了足夠的時間閱讀 numpy 基礎知識來遇到broadcasting
?
(y[:,None,None]*X).sum(axis=0)
應該管用。
我一開始就想過 lambda function 或列表理解之類的東西,但無法讓它運行。 也許這會有所幫助,您可以弄清楚,我也很好奇如何解決這個問題!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.