numpy 聚合矩阵中列的各部分

r1zhe5dt  于 2023-06-23  发布在  其他
关注(0)|答案(3)|浏览(100)

我有一个这样的矩阵:

A = [[ 1.0,  2.0,  3.0,  4.0,  5.0],
     [ 6.0,  7.0,  8.0,  9.0, 10.0],
     [11.0, 12.0, 13.0, 14.0, 15.0],
     [16.0, 17.0, 18.0, 19.0, 20.0]]

我想聚合矩阵的各个部分。例如,**6 [1][0]11 [2][0]**的平均值。我的直觉是这样做的:np.mean(A[1:2][0])但这个不行
如何聚合矩阵的区间?

yvfmudvl

yvfmudvl1#

你可以在这里使用Numpy在Numpy数组中转换

A = [[ 1.0,  2.0,  3.0,  4.0,  5.0],
     [ 6.0,  7.0,  8.0,  9.0, 10.0],
     [11.0, 12.0, 13.0, 14.0, 15.0],
     [16.0, 17.0, 18.0, 19.0, 20.0]]

import numpy as np
slice = np.array(A)[1:3,0]
mean = np.mean(slice)

在这个例子中,我们使用切片符号A [1:3,0]来选择矩阵A的第1到第2行(不含)和第0列。这将创建一个1D数组[6.0,11.0],然后我们使用np. mean()计算平均值,结果为8.5。
请记住,当切片数组时,范围对于结束索引是独占的。所以1:3选择第1行和第2行,但不选择第3行。类似地,0仅选择列0。

kyxcudwk

kyxcudwk2#

正如目前所写的,A是一个嵌套列表。它不是一个numpy数组。
如果你想访问这个列表中的元素,你可以简单地做索引。

A[1][0]
#6.0

A[2][0]
#11.0

(A[1][0]+A[2][0])/2
#8.5

如果你将列表转换为np.array,那么:

import numpy as np
A = np.array([[ 1.0,  2.0,  3.0,  4.0,  5.0],
     [ 6.0,  7.0,  8.0,  9.0, 10.0],
     [11.0, 12.0, 13.0, 14.0, 15.0],
     [16.0, 17.0, 18.0, 19.0, 20.0]])

A[1:3, 0].mean()
#8.5
vqlkdk9b

vqlkdk9b3#

你的答案是躺在numpy切片和索引的机制。首先,A[1:2]只返回一行,作为最后的exclusive范围,因此您需要将其替换为A[1:3]。其次,你只需要2行数组第一列的元素(6,11),所以你做[:, 0]。Together => np.mean(A[1:3][:, 0]) .

相关问题