【发布时间】:2018-08-29 12:33:58
【问题描述】:
我有一个 MyClass 类,它存储一个整数 a。我想在其中定义一个函数,该函数采用长度为a 的numpy 数组x,但我希望如果用户没有传入任何内容,x 被设置为相同长度的随机数组。 (如果他们传入错误长度的值,我会引发错误)。基本上,我希望x 默认为大小为a 的随机数组。
这是我实现这个的尝试
import numpy as np
class MyClass():
def __init__(self, a):
self.a = a
def function(self, x = None):
if x == None:
x = np.random.rand(self.a)
# do some more functiony stuff with x
如果没有传入任何内容,则此方法有效,但如果传入x,我会得到ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all(),即似乎numpy 不喜欢将数组与None 进行比较。
定义默认值 inline 不起作用,因为 self 尚未在范围内。
有没有很好的pythonic方法来实现这一点?总而言之,我希望参数 x 默认为具有特定类定义长度的随机数组。
【问题讨论】:
-
该错误是由对数组执行
==测试引起的。这样的测试会产生一个相同大小的布尔数组。if [True,False,True,False]:有意义吗?幸运的是,在这种情况下,is None是正确的选择。
标签: python arrays numpy default-value