I’m fairly new to python and I am currently making use of the numPy library along with pyinterval library. I want to build a matrix that isn’t composed of floats, but intervals.
however if I do the following:
A = [[interval([2,3]), interval([0,1]), interval([1,2]), interval([2,3])]]
m = np.matrix(A,interval)
it gives the following error:
raise ValueError, "matrix must be 2-dimensional"
In order to see how it was doing it I looked at this:
np.array(A)
and got the following output:
array([[[[ 2., 3.]],
[[ 0., 1.]],
[[ 1., 2.]],
[[ 2., 3.]]]])
when I wanted to see something like:
array([[interval(2,3), interval[0,1],
[interval(1,2), interval[2,3]])
I’m not sure how to get it to understand the type that I am using, I have tried various things after doing some searches but nothing seems to work.
How can I get it to see one interval as only one element in the array/matrix?
Thank you,
From the docs regarding dtype syntax:
So to specify it as one item in the array, you might try setting the dtype to
'(2,)object':To make a 2×2 ndarray:
To make a 2×2 matrix:
Warning: I don’t really understand dtype syntax. It is far too complicated and occasionally I see strange bug reports (#1955,#1760, #1580) related to use of exotic dtypes. My personal conclusion is that it is safer to stick to plain, simple dtypes. Or, if you need to use a more complicated dtype, unit test it to make sure it behaves as you expect.
An easier, better way to define the arrays is:
This tells numpy explicity what shape array you want, and then, since the dtype is
object, you can stuff whatever you please into the cells of the array.Moreover, unlike the
dtype='(2,)object'solution above, it also works for 1D arrays: