我有一个多维数组列表,需要访问每个数组并对它们进行操作。 模拟数据:
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():
我想知道是否有人为此提供了一个很好的解决方案。
答案 0 :(得分:3)
您可以在其他地方定义函数,然后在循环中调用它。您没有在循环中反复定义函数。
def do_something(np_array):
# work on the array here
for i in list_of_array:
do_something(i)
作为一个工作示例,我们只需说出sum
array
函数即可
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]
答案 1 :(得分:1)
您可以通过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()
会给你这个