Мой ввод представляет собой массив кортежей
values = np.array([(4, 5, 2, 18), (4, 7, 3, 8)])
, и моя функция выглядит следующим образом:
def outerFunc(values):
print(values)
def innerFunc(values):
print(values)
mean = np.mean(values)
result = 0
for i in range(len(values)):
result += math.pow(values[i] - mean, 2)
return result
if isinstance(values, np.ndarray):
return np.vectorize(innerFunc)(values)
else:
return innerFunc(values)
Хотя я хочу векторизовать одно измерение, т. Е. Один кортежвыполняется внутри innerFunc, но мой вывод выглядит следующим образом:
[[ 4 5 2 18]
[ 4 7 3 8]]
4
...
Это означает, что функция векторизации выполняет векторизацию по двум измерениям, и я получаю следующую ошибку:
for i in range(len(values)):
TypeError: object of type 'numpy.int64' has no len()
Чтоизменения, чтобы сделать вывод:
[[ 4 5 2 18]
[ 4 7 3 8]]
[4 5 2 18]
...
что-то вроде этого
Спасибо.
РЕДАКТИРОВАТЬ
Этоработает как принято, когда кортежи разной длины, может кто-нибудь объяснить это,
например, мой ввод
np.array([(4, 5, 2, 18), (4, 7, 3,)])
и функция печатает
[(4, 5, 2, 18) (4, 7, 3)]
(4, 5, 2, 18)
(4, 7, 3)
ивозвращаемое значение равно
[158.75 8.66666667]
Таким образом, только когда все кортежи имеют одинаковую длину, функция обрабатывает их как числа.
Спасибо.