簡體   English   中英

迭代二維arrays並賦值給python中function的變量

[英]Iterate 2D arrays and assignment to variables of function in python

我是Python的新手。我有一個二維數組(10,4),需要通過將每一行的四個值分配給function(x1,x2,x3,x4)的四個變量來迭代數組元素,並返回function output。請看看我的代碼並給我合適的建議。 謝謝

import pandas as pd
import numpy as np

nv = 4              
lb = [0, 0, 0, 0]
ub = [20, 17, 17, 15]
n = 10             

def random_population(nv,n,lb,ub):
    pop = np.zeros((n, nv)) 
    for i in range(n):
        pop[i,:] = np.random.uniform(lb,ub)
    return pop

population = random_population(nv, n, lb, ub)

i = 0 #row number
j = 0 # col number

rows = population.shape[0]
cols = population.shape[1]

x1 = population[i][j]
x2 = population[i][j+1]
x3 = population[i][j+2]
x4 = population[i][j+3]

def test(x1, x2, x3, x4):   
##Assignment statement
    y = x1+x2+x3+x4         
    return y
test(x1, x2, x3, x4)

您可以使用 Python 星號表達式將一個數組作為 arguments 的列表傳遞給您的測試 function。

test(*population[i])

// instead of
x1 = population[i][j]
x2 = population[i][j+1]
x3 = population[i][j+2]
x4 = population[i][j+3]
test(x1, x2, x3, x4)

結果你可以只給你的 function numpy arrays 因為它們之間的加法被定義為逐元素加法,所以它會做你想要的。 所以你首先像這樣從數組中提取列

population[:,0], population[:,1], ...

然后

test(population[:,0],population[:,1],population[:,2],population[:,3])

給你一個數組,第一個值與

test(x1, x2, x3, x4).

問題不清楚,但如果我的目標正確並且作者只需要根據標題進行迭代而不是像Michael Szczesny在評論中提到的那樣進行矢量化),則以下循環會將population 數組每一行放入測試 function

for row in population:
    x1, x2, x3, x4 = row
    test(x1, x2, x3, x4)

或者

for row in population:
    test(*row)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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