Естественно написать свой тест в терминах 3 отдельных массивов numpy, но первое измерение каждого массива numpy должно быть одинаковой длины. В качестве взлома я могу просто попросить больший массив numpy
@given(
arrays=arrays(
dtype=float,
shape=tuples(
integers(3, 3),
array_shapes(max_dims=1).map(lambda t: t[0]),
array_shapes(max_dims=1).map(lambda t: t[0]),
),
elements=floats(width=16, allow_nan=False, allow_infinity=False),
),
)
def test(arrays: np.ndarray):
a, b, c = arrays[0], arrays[1], arrays[2]
...
, но это скрывает то, что я действительно пытаюсь сгенерировать, и делает невозможным использование отдельных стратегий для элементов каждого из массивы. Есть ли способ сгенерировать эти массивы при сохранении ограничения на размер первого измерения? Думаю, мне нужно что-то вроде
@given(
(a, b, c) = batched_arrays(
n_arrays=3,
shared_sizes=array_sizes(max_dims=1),
unshared_sizes=arrays_sizes(),
dtypes=[float, int, float],
elements=[floats(), integers(0), floats(0, 1)])
)
def test(a: np.ndarray, b:np.ndarray, c:np.ndarray):
assert a.shape[0] == b.shape[0] and a.shape[0] == c.shape[0]
...