只有错误整数标量数组可以转换为标量索引

我使用的是Python 3.6 .

我想做:

import numpy as np

def run_11(x):
return x+1

kk = np.arange(1, 17)

for i in range (kk):
     ind = run_11(i)
     print (i)
     print (ind)

我收到此错误:

TypeError:只能将整数标量数组转换为标量索引

我无法理解为什么以及如何解决它 . 任何建议将不胜感激

回答(2)

3 years ago

使用 range(kk.shape[0])

for i in range(kk.shape[0]):
     ind = run_11(i)
     print (i)
     print (ind)

range() 采用整数作为参数,而不是NumPy数组 . .shape[0] 为您提供 16 ,即数组的长度 .

这样做会很短:

res = run_11(kk)

这也更快,并利用NumPys矢量化功能 .

3 years ago

使用 for i in kk 而不是 for i in range(kk) 因为 kk 已经是一个范围 . 你试图做 for i in range(np.arange(1, 17)) 这没有意义,因为范围输入数字,而不是另一个范围 .