У меня есть матрица NumPy
которая содержит в основном ненулевые значения, но иногда будет содержать нулевое значение. Мне нужно уметь:
-
Подсчитайте ненулевые значения в каждой строке и поместите это число в переменную, которую я могу использовать в последующих операциях, возможно, путем перебора индексов строк и выполнения вычислений во время итеративного процесса.
-
Подсчитайте ненулевые значения в каждом столбце и поместите этот счет в переменную, которую я могу использовать в последующих операциях, возможно, путем перебора индексов столбцов и выполнения вычислений во время итеративного процесса.
Например, одну вещь, которую мне нужно сделать, - это суммировать каждую строку, а затем делить сумму каждой строки на количество ненулевых значений в каждой строке, сообщая отдельный результат для каждого индекса строки. А затем мне нужно сложить каждый столбец, а затем разделить сумму столбцов на количество ненулевых значений в столбце, а также сообщить отдельный результат для каждого индекса столбца. Мне нужно делать и другие вещи, но они должны быть легкими после того, как я пойму, как делать вещи, которые я перечисляю здесь.
Код, с которым я работаю, приведен ниже. Вы можете видеть, что я создаю массив нулей, а затем заполняю его из файла 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))
Кто-нибудь может мне с этим помочь?