Следующий код:
import numpy as p
myarr=[[0,1],[0,6],[0,1],[0,6],[0,1],[0,6],[0,1],[0,6],[0,1],[0,6],[0,1],[0,6],[0,1],[0,6],[0,1],[0,6],[0,1],[0,6]]
copy=p.array(myarr)
p.mean(copy)[:,1]
Генерирует следующее сообщение об ошибке:
Traceback (most recent call last):
File "<pyshell#3>", line 1, in <module>
p.mean(copy)[:,1]
IndexError: 0-d arrays can only use a single () or a list of newaxes (and a single ...) as an index
Я посмотрел синтаксис по этой ссылке и мне кажется,использовать правильный синтаксис для нарезки.Однако, когда я набираю
copy[:,1]
в оболочке Python, он выдает мне следующий вывод, который явно неверен и, вероятно, вызывает ошибку:
array([1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6])
МожетКто-нибудь покажет мне, как исправить мой код, чтобы я мог извлечь второй столбец, а затем взять среднее значение второго столбца, как и предполагалось в исходном коде выше?
РЕДАКТИРОВАТЬ:
Спасибо за ваши решения.Тем не менее, моя публикация была упрощением моей настоящей проблемы.Я использовал ваши решения в своем реальном коде и получил новую ошибку.Вот мой реальный код с одним из ваших решений, которые я попробовал:
filteredSignalArray=p.array(filteredSignalArray)
logical=p.logical_and(EndTime-10.0<=matchingTimeArray,matchingTimeArray<=EndTime)
finalStageTime=matchingTimeArray.compress(logical)
finalStageFiltered=filteredSignalArray.compress(logical)
for j in range(len(finalStageTime)):
if j == 0:
outputArray=[[finalStageTime[j],finalStageFiltered[j]]]
else:
outputArray+=[[finalStageTime[j],finalStageFiltered[j]]]
print 'outputArray[:,1].mean() is: ',outputArray[:,1].mean()
А вот сообщение об ошибке, которое теперь генерируется новым кодом:
File "mypath\myscript.py", line 1545, in WriteToOutput10SecondsBeforeTimeMarker
print 'outputArray[:,1].mean() is: ',outputArray[:,1].mean()
TypeError: list indices must be integers, not tuple
Второй РЕДАКТИРОВАТЬ:
Это решено теперь, когда я добавил:
outputArray=p.array(outputArray)
над моим кодом.
Я был на этом слишком много часов, и мне нужносделать перерыв на некоторое время, если я совершаю подобные ошибки.