我有一个几乎全是非零值的NumPy矩阵,但偶尔会包含零值。我需要能够:
1. 计算每行中的非零值数量,并将该计数放入变量中,以便在后续操作中使用,可能通过迭代行索引并在迭代过程中执行计算来实现。 2. 计算每列中的非零值数量,并将该计数放入变量中,以便在后续操作中使用,可能通过迭代列索引并在迭代过程中执行计算来实现。
例如,我需要做的一件事是对每行进行求和,然后将每行总和除以每行中的非零值数量,为每个行索引报告单独的结果。然后,我需要对每列进行求和,然后将每列总和除以列中的非零值数量,也为每个列索引报告单独的结果。我还需要做其他一些事情,但只要我弄清楚如何完成这里列出的任务,其他的应该很容易。
我正在处理的代码如下。您可以看到我正在创建一个零数组,然后从csv文件中填充它。某些行将包含所有列的值,但其他行仍将在某些最后列中保留一些零,因此创建了上述问题。
以下代码的最后五行来自本论坛上的另一篇帖子。这最后五行代码返回一个零的行/列索引列表。但我不知道如何使用该结果信息来创建上述非零行计数和非零列计数。
1. 计算每行中的非零值数量,并将该计数放入变量中,以便在后续操作中使用,可能通过迭代行索引并在迭代过程中执行计算来实现。 2. 计算每列中的非零值数量,并将该计数放入变量中,以便在后续操作中使用,可能通过迭代列索引并在迭代过程中执行计算来实现。
例如,我需要做的一件事是对每行进行求和,然后将每行总和除以每行中的非零值数量,为每个行索引报告单独的结果。然后,我需要对每列进行求和,然后将每列总和除以列中的非零值数量,也为每个列索引报告单独的结果。我还需要做其他一些事情,但只要我弄清楚如何完成这里列出的任务,其他的应该很容易。
我正在处理的代码如下。您可以看到我正在创建一个零数组,然后从csv文件中填充它。某些行将包含所有列的值,但其他行仍将在某些最后列中保留一些零,因此创建了上述问题。
以下代码的最后五行来自本论坛上的另一篇帖子。这最后五行代码返回一个零的行/列索引列表。但我不知道如何使用该结果信息来创建上述非零行计数和非零列计数。
ANOVAInputMatrixValuesArray=zeros([len(TestIDs),9],float)
j=0
for j in range(0,len(TestIDs)):
TestID=str(TestIDs[j])
ReadOrWrite='Read'
fileName=inputFileName
directory=GetCurrentDirectory(arguments that return correct directory)
inputfile=open(directory,'r')
reader=csv.reader(inputfile)
m=0
for row in reader:
if m<9:
if row[0]!='TestID':
ANOVAInputMatrixValuesArray[(j-1),m]=row[2]
m+=1
inputfile.close()
IndicesOfZeros = indices(ANOVAInputMatrixValuesArray.shape)
locs = IndicesOfZeros[:,ANOVAInputMatrixValuesArray == 0]
pts = hsplit(locs, len(locs[0]))
for pt in pts:
print(', '.join(str(p[0]) for p in pt))
有谁可以帮助我吗?