Python 将默认值设置为numpy数组
我有一个类MyClass,它存储一个整数Python 将默认值设置为numpy数组,python,arrays,numpy,default-value,Python,Arrays,Numpy,Default Value,我有一个类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 = N
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
,则此操作有效。I getValueError:包含多个元素的数组的真值不明确。使用a.any()或a.all()
即,numpy似乎不喜欢将数组与None
进行比较
内联定义默认值不起作用,因为self
不在范围内
有没有一个好的蟒蛇式的方法来实现这一点?总之,我希望参数
x
默认为具有特定的、类定义长度的随机数组 根据经验,任何东西和None
的比较都应该使用is
而不是=
来完成
将x==None时的更改为x为None时的
可以解决此问题
class MyClass():
def __init__(self, a):
self.a = a
def function(self, x=None, y=None):
if x is None:
x = np.random.rand(self.a)
print(x)
MyClass(2).function(np.array([1, 2]))
MyClass(2).function()
# [1 2]
# [ 0.92032119 0.71054885]
根据经验,任何东西和None
的比较都应该使用is
而不是=
来完成
将x==None时的更改为x为None时的
可以解决此问题
class MyClass():
def __init__(self, a):
self.a = a
def function(self, x=None, y=None):
if x is None:
x = np.random.rand(self.a)
print(x)
MyClass(2).function(np.array([1, 2]))
MyClass(2).function()
# [1 2]
# [ 0.92032119 0.71054885]
这实际上是Python鼓励使用is None
而不是==None
的关键原因之一,然而每当人们回答关于“为什么我们应该使用is None”的问题时,我忘记了——我的意思是那些人忘记了,而是把注意力集中在最初的原因和各种不太重要的事情上……这实际上是Python鼓励是无的
而不是==None
,然而每当人们回答关于“为什么我们应该使用is-None”的问题时,我忘记了——我的意思是那些人忘记了,转而关注原始原因和各种不太重要的事情……错误是由对数组执行==
测试引起的。这样的测试会生成一个大小相同的布尔数组。如果[True,False,True,False]:
有意义吗?幸运的是,在这种情况下,是无的
是正确的选择。错误是由对数组执行=
测试引起的。这样的测试会生成一个大小相同的布尔数组。如果[True,False,True,False]:
有意义吗?幸运的是,在这种情况下,是无的
是正确的选择。