我的输入是一个 numpy 元组数组
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]
...
像这样的东西
谢谢。
EDIT
当元组长度不同时,它按照可接受的方式工作,任何人都可以解释这一点,
例如,我的输入是
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]
因此,只有当所有元组的长度相同时,该函数才会将它们视为数字。
谢谢。