簡體   English   中英

遍歷numpy數組列表

[英]Iterate through a list of numpy arrays

我有一個多維數組的列表,需要訪問每個數組並對其進行操作。 模擬數據:

list_of_arrays = map(lambda x: x*np.random.rand(2,2), range(4))
list_of_arrays
[array([[ 0.,  0.],[ 0.,  0.]]), array([[ 0.39881669,  0.65894242],[ 0.10857551,   0.53317832]]), array([[ 1.39833735,  0.1097232 ],[ 1.89622798,  1.79167888]]), array([[ 1.98242087,  0.3287465 ],[ 1.2449321 ,  2.27102359]])]

我的問題是:

1-我如何遍歷list_of_arrays ,所以每次迭代都會返回每個單獨的數組?
例如,迭代1返回list_of_arrays[0] ...最后迭代返回list_of_arrays[-1]

2-如何將每次迭代的結果用作另一個函數的輸入?

我對Python相當陌生。 我的第一個想法是在for循環中定義函數,但是我不清楚如何實現此功能:

for i in list_of_array:
    def do_something():

我想知道是否有人對此有一個好的解決方案。

您可以在其他位置定義函數,然后在循環中調用它。 您無需在循環中一遍又一遍地定義函數。

def do_something(np_array):
    # work on the array here

for i in list_of_array:
    do_something(i)

作為一個工作示例,只說我在每個array上調用sum函數

def total(np_array):
    return sum(np_array)

現在我可以在for循環中調用它

for i in list_of_arrays:
    print total(i)

產量

[ 0.  0.]
[ 1.13075762  0.87658186]
[ 2.34610724  0.77485066]
[ 1.08704527  2.59122417]

您可以通過for循環訪問每個數組,然后可以執行所需的任何操作

例子

使用內置功能

import numpy as np
list_of_arrays = map(lambda x: x*np.random.rand(2,2), range(4))
for i in list_of_arrays:
    print sum(i)

使用用戶定義的功能

import numpy as np
def foo(i):
    #Do something here 

list_of_arrays = map(lambda x: x*np.random.rand(2,2), range(4))
for i in list_of_arrays:
    foo(i)

繪制數據進行分析

import numpy as np
import matplotlib.pyplot as plt
list_of_arrays = map(lambda x: x*np.random.rand(2,100), range(4))
fig = plt.figure(figsize=(10,12))
j=1
for i in list_of_arrays:
    plt.subplot(2,2,j)
    j=j+1
    plt.scatter(i[0],i[1])
    plt.draw()
plt.show()

會給你這個 2 * 100矩陣中的行比較

暫無
暫無

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

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