簡體   English   中英

如何避免 python 中的“for”循環

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM