我有一个这样的矩阵:
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])但这个不行如何聚合矩阵的区间?
np.mean(A[1:2][0])
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。
kyxcudwk2#
正如目前所写的,A是一个嵌套列表。它不是一个numpy数组。如果你想访问这个列表中的元素,你可以简单地做索引。
A
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
vqlkdk9b3#
你的答案是躺在numpy切片和索引的机制。首先,A[1:2]只返回一行,作为最后的exclusive范围,因此您需要将其替换为A[1:3]。其次,你只需要2行数组第一列的元素(6,11),所以你做[:, 0]。Together => np.mean(A[1:3][:, 0]) .
A[1:2]
A[1:3]
[:, 0]
np.mean(A[1:3][:, 0])
3条答案
按热度按时间yvfmudvl1#
你可以在这里使用Numpy在Numpy数组中转换
在这个例子中,我们使用切片符号A [1:3,0]来选择矩阵A的第1到第2行(不含)和第0列。这将创建一个1D数组[6.0,11.0],然后我们使用np. mean()计算平均值,结果为8.5。
请记住,当切片数组时,范围对于结束索引是独占的。所以1:3选择第1行和第2行,但不选择第3行。类似地,0仅选择列0。
kyxcudwk2#
正如目前所写的,
A
是一个嵌套列表。它不是一个numpy数组。如果你想访问这个列表中的元素,你可以简单地做索引。
如果你将列表转换为np.array,那么:
vqlkdk9b3#
你的答案是躺在numpy切片和索引的机制。首先,
A[1:2]
只返回一行,作为最后的exclusive范围,因此您需要将其替换为A[1:3]
。其次,你只需要2行数组第一列的元素(6,11),所以你做[:, 0]
。Together =>np.mean(A[1:3][:, 0])
.