如何在python中将numpy标量很好地传递给函数?
我有一个numpy数组如何在python中将numpy标量很好地传递给函数?,python,numpy,Python,Numpy,我有一个numpy数组a,希望将其元素传递给循环中的函数func: a = np.array([0, 0, 1], dtype='bool') def func(x): if x is True: # do something else: # do something else for i in np.arange(3): res = func(a[i]) 我希望a[I]是,但事实上它是,我每次都必须使用a[I].item()将其转换
a
,希望将其元素传递给循环中的函数func
:
a = np.array([0, 0, 1], dtype='bool')
def func(x):
if x is True:
# do something
else:
# do something else
for i in np.arange(3):
res = func(a[i])
我希望a[I]
是
,但事实上它是
,我每次都必须使用a[I].item()
将其转换为python标量,这很容易出错
for i in np.arange(3):
res = func(a[i].item())
有更好的方法吗?
对于a.tolist()中的x:res=func(x)
可能会起作用。在列表上迭代要比在数组上迭代快。但是你确定你的func
被一个bool\ucode>对象而不是一个普通的pythonbool
对象所困扰吗?如果你的函数是正确的duck类型,这应该不是问题。@hpaulj谢谢你的提示。你是对的。我发现,如果我将if条件if x为True:
更改为if x:
,则类型不再是问题,但我仍然想知道这两个if条件之间的区别。是对对象标识的测试<代码>如果x:
测试值“真实性”<代码>1
、'foobar'、[123]
均为“true”,但与唯一的true
布尔对象不相同。