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