summaryrefslogtreecommitdiff
path: root/numpy
diff options
context:
space:
mode:
Diffstat (limited to 'numpy')
-rw-r--r--numpy/random/_generator.pyx4
-rw-r--r--numpy/random/mtrand.pyx4
-rw-r--r--numpy/random/tests/test_generator_mt19937.py6
-rw-r--r--numpy/random/tests/test_random.py6
4 files changed, 16 insertions, 4 deletions
diff --git a/numpy/random/_generator.pyx b/numpy/random/_generator.pyx
index 27e006cc3..dc0ec83f5 100644
--- a/numpy/random/_generator.pyx
+++ b/numpy/random/_generator.pyx
@@ -3642,8 +3642,8 @@ cdef class Generator:
d = len(pvals)
on = <np.ndarray>np.PyArray_FROM_OTF(n, np.NPY_INT64, np.NPY_ALIGNED)
- parr = <np.ndarray>np.PyArray_FROM_OTF(
- pvals, np.NPY_DOUBLE, np.NPY_ALIGNED | np.NPY_ARRAY_C_CONTIGUOUS)
+ parr = <np.ndarray>np.PyArray_FROMANY(
+ pvals, np.NPY_DOUBLE, 1, 1, np.NPY_ARRAY_ALIGNED | np.NPY_ARRAY_C_CONTIGUOUS)
pix = <double*>np.PyArray_DATA(parr)
check_array_constraint(parr, 'pvals', CONS_BOUNDED_0_1)
if kahan_sum(pix, d-1) > (1.0 + 1e-12):
diff --git a/numpy/random/mtrand.pyx b/numpy/random/mtrand.pyx
index b1faa1035..ec1fa352b 100644
--- a/numpy/random/mtrand.pyx
+++ b/numpy/random/mtrand.pyx
@@ -4199,8 +4199,8 @@ cdef class RandomState:
cdef long ni
d = len(pvals)
- parr = <np.ndarray>np.PyArray_FROM_OTF(
- pvals, np.NPY_DOUBLE, np.NPY_ALIGNED | np.NPY_ARRAY_C_CONTIGUOUS)
+ parr = <np.ndarray>np.PyArray_FROMANY(
+ pvals, np.NPY_DOUBLE, 1, 1, np.NPY_ARRAY_ALIGNED | np.NPY_ARRAY_C_CONTIGUOUS)
pix = <double*>np.PyArray_DATA(parr)
check_array_constraint(parr, 'pvals', CONS_BOUNDED_0_1)
if kahan_sum(pix, d-1) > (1.0 + 1e-12):
diff --git a/numpy/random/tests/test_generator_mt19937.py b/numpy/random/tests/test_generator_mt19937.py
index c4c1fa316..ce90ccdc5 100644
--- a/numpy/random/tests/test_generator_mt19937.py
+++ b/numpy/random/tests/test_generator_mt19937.py
@@ -115,6 +115,12 @@ class TestMultinomial:
contig = random.multinomial(100, pvals=np.ascontiguousarray(pvals))
assert_array_equal(non_contig, contig)
+ def test_multidimensional_pvals(self):
+ assert_raises(ValueError, random.multinomial, 10, [[0, 1]])
+ assert_raises(ValueError, random.multinomial, 10, [[0], [1]])
+ assert_raises(ValueError, random.multinomial, 10, [[[0], [1]], [[1], [0]]])
+ assert_raises(ValueError, random.multinomial, 10, np.array([[0, 1], [1, 0]]))
+
class TestMultivariateHypergeometric:
diff --git a/numpy/random/tests/test_random.py b/numpy/random/tests/test_random.py
index a9aa15083..c5f79d2c1 100644
--- a/numpy/random/tests/test_random.py
+++ b/numpy/random/tests/test_random.py
@@ -91,6 +91,12 @@ class TestMultinomial:
assert_raises(TypeError, np.random.multinomial, 1, p,
float(1))
+ def test_multidimensional_pvals(self):
+ assert_raises(ValueError, np.random.multinomial, 10, [[0, 1]])
+ assert_raises(ValueError, np.random.multinomial, 10, [[0], [1]])
+ assert_raises(ValueError, np.random.multinomial, 10, [[[0], [1]], [[1], [0]]])
+ assert_raises(ValueError, np.random.multinomial, 10, np.array([[0, 1], [1, 0]]))
+
class TestSetState:
def setup(self):