使用numpy在python中迭代矩阵

时间:2017-11-01 19:09:15

标签: python arrays numpy matrix scipy

我想通过迭代5个不同的矩阵来生成结果矩阵,首先我想获取所有矩阵的第一个值并取这些值的平均值,并将结果作为结果矩阵的第一个值附加。任何人都可以使用numpy库告诉如何在python中执行此操作??

1 个答案:

答案 0 :(得分:0)

一般来说,你想避免(可能慢)基于python的循环,让numpy做(更快)基于c的循环(或根本没有循环)。

大多数人会将删除显式循环的方法称为(numpy-)向量化,这对于性能来说通常非常重要。

以下示例创建了5个大小为import numpy as np a, b, c, d, e = [np.random.randint(0, 5, size=(3,3)) for i in range(5)] all = np.stack((a, b, c, d, e), axis=0) print(all.shape) x = np.mean(all, axis=0) print(a) print(b) print(c) print(d) print(e) print(x) 的numpy-arrays(矩阵类型,也存在,有点不推荐使用,此处未使用,大多数numpy用户应使用数组作为矩阵的替换)和计算一个包含所有具有相同形状的平均值的新矩阵(矩阵单元格上的元素均值;我们将二维数组解释为矩阵)。

代码:

(5, 3, 3)
[[0 0 0]
 [0 1 0]
 [2 4 0]]
[[4 2 0]
 [3 3 4]
 [0 4 0]]
[[3 4 0]
 [2 2 1]
 [0 0 4]]
[[3 1 2]
 [4 3 4]
 [2 0 3]]
[[3 4 2]
 [3 1 0]
 [1 0 0]]
[[ 2.6  2.2  0.8]
 [ 2.4  2.   1.8]
 [ 1.   1.6  1.4]]

输出:

for row in range(array.shape[0]):  
    for col in range(array.shape[1]):
        cell_value = array[row, col]
        ...

如果您仍想循环,可以使用嵌套循环,如:

{{1}}

给出2维数组。