Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
获取以numpy表示的对角线下的项目数_Numpy_Mean_Diagonal - Fatal编程技术网

获取以numpy表示的对角线下的项目数

获取以numpy表示的对角线下的项目数,numpy,mean,diagonal,Numpy,Mean,Diagonal,我有一个相关矩阵,我想得到对角线下的项数。最好是在努比 [[1, 0, 0, 0, 0], [.35, 1, 0, 0, 0], [.42, .31, 1, 0, 0], [.25, .38, .41, 1, 0], [.21, .36, .46, .31, 1]] 我要它退10英镑。或者,返回对角线下所有数字的平均值。设置 将给出对角线下所有元素的索引(如果您提供的偏移量为-1),从那里开始,它变得非常简单,只需索引和调用mean和size

我有一个相关矩阵,我想得到对角线下的项数。最好是在努比

[[1,   0,   0,   0,  0], 
[.35,  1,   0,   0,  0], 
[.42, .31,  1,   0,  0], 
[.25, .38, .41,  1,  0], 
[.21, .36, .46, .31, 1]]
我要它退10英镑。或者,返回对角线下所有数字的平均值。

设置


将给出对角线下所有元素的索引(如果您提供的偏移量为
-1
),从那里开始,它变得非常简单,只需索引和调用
mean
size


设置


将给出对角线下所有元素的索引(如果您提供的偏移量为
-1
),从那里开始,它变得非常简单,只需索引和调用
mean
size



由于
numpy
提供了用户3483203提到的
np.tril_索引
,一个更原始、更庞大的答案,但每行迭代i需要的是以下内容(就[row,col]索引而言):

这本质上是列表
[i,i,i,…]=[i]*i
(i的重复)的
zip
,其中
[0,1,…,i-1]=范围(i)
。因此,迭代表中的行,实际上可以获得每次迭代的索引,并执行您选择的运算符

设置示例:

test = np.array(
[[1,   0,   0,   0,  0], 
[.35,  1,   0,   0,  0], 
[.42, .31,  1,   0,  0], 
[.25, .38, .41,  1,  0], 
[.21, .36, .46, .31, 1]])
功能定义:

def countdiag(myarray):
    numvals = 0
    totsum = 0


    for i in range(myarray.shape[0]): # row iteration
        colc = np.array(range(i)) # calculate column indices
        rowc = np.array([i]*i) # calculate row indices

        if any(rowc):
            print(np.sum(myarray[rowc,colc]))
            print(len(myarray[rowc,colc]))

            numvals += len(myarray[rowc,colc])
            totsum += np.sum(myarray[rowc,colc])


        print(list(zip([i]*i, np.arange(i))))

    mean = totsum / numvals

    return mean, numvals
测试:


由于
numpy
提供了用户3483203提到的
np.tril_索引
,一个更原始、更庞大的答案,但每行迭代i需要的是以下内容(就[row,col]索引而言):

这本质上是列表
[i,i,i,…]=[i]*i
(i的重复)的
zip
,其中
[0,1,…,i-1]=范围(i)
。因此,迭代表中的行,实际上可以获得每次迭代的索引,并执行您选择的运算符

设置示例:

test = np.array(
[[1,   0,   0,   0,  0], 
[.35,  1,   0,   0,  0], 
[.42, .31,  1,   0,  0], 
[.25, .38, .41,  1,  0], 
[.21, .36, .46, .31, 1]])
功能定义:

def countdiag(myarray):
    numvals = 0
    totsum = 0


    for i in range(myarray.shape[0]): # row iteration
        colc = np.array(range(i)) # calculate column indices
        rowc = np.array([i]*i) # calculate row indices

        if any(rowc):
            print(np.sum(myarray[rowc,colc]))
            print(len(myarray[rowc,colc]))

            numvals += len(myarray[rowc,colc])
            totsum += np.sum(myarray[rowc,colc])


        print(list(zip([i]*i, np.arange(i))))

    mean = totsum / numvals

    return mean, numvals
测试:

你能检查一下numpy.trace并告诉我这是否有用吗。
def countdiag(myarray):
    numvals = 0
    totsum = 0


    for i in range(myarray.shape[0]): # row iteration
        colc = np.array(range(i)) # calculate column indices
        rowc = np.array([i]*i) # calculate row indices

        if any(rowc):
            print(np.sum(myarray[rowc,colc]))
            print(len(myarray[rowc,colc]))

            numvals += len(myarray[rowc,colc])
            totsum += np.sum(myarray[rowc,colc])


        print(list(zip([i]*i, np.arange(i))))

    mean = totsum / numvals

    return mean, numvals
 [165]: countdiag(test)



[]
0.35
1
[(1, 0)]
0.73
2
[(2, 0), (2, 1)]
1.04
3
[(3, 0), (3, 1), (3, 2)]
1.34
4
[(4, 0), (4, 1), (4, 2), (4, 3)]
0.346
Out[165]:
(0.346, 10)