[英]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()
會給你這個
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.