我想为NumPy测试生成一个策略,输出如下:
array([[-2, -2],
[-3, -3],
[5, 5],
[-1, -1]], dtype=int16)
我尝试的是:
import numpy as np
from hypothesis.strategies import integers
from hypothesis.extra.numpy import arrays
arrays(np.int16, (4,2), elements=integers(-10, 10)).example()
不幸的是,我无法使元组中的值相同,因此上面的查询返回:
array([[ 5, 5],
[-7, 5],
[ 5, 5],
[ 5, 5]], dtype=int16)
不确定这是您想要的,但是来自
hypothesis.extra.numpy
的arrays
似乎没有复制值的选项您可以这样构造所需的阵列:
示例结果:
如果您不喜欢
2
维度被烘焙,您可以使用如下两个参数:我发现,如果我需要在现有策略的结构中控制内容(例如数组中相同值的对),我需要跳过该策略,以获得较低级别的策略,我可以使用该策略构建一个“现成”值,该值可以为我想要生成的类型播种
让我们利用numpy.array接受列表列表来创建数组。我们还假设您希望每一行都是唯一的,因为您的示例没有显示重复的行。如果不需要,请从
depth_strategy
定义中删除unique_by=str
这会产生如下结果:
请注意,我将max_examples设置为10,因为假设给出了一个更高的出现率,与它认为“麻烦”的值相比,例如零、NaN、无穷大等等。因此,example()或更少数量的示例可能会生成大量全零的2x4数组。幸运的是,独特的_by约束在这里帮助了我们
无需过多研究np提供的功能,您只需使用生成器生成元组即可:
相关问题 更多 >
编程相关推荐