hello,
sorry newbe to numpy.
I want to define a threedim array. I know this works:
np.array([[[1,2],[3,4]],[[5,6],[7,8]]])
array([[[1, 2], [3, 4]],
[[5, 6], [7, 8]]])
But can you tell why this doesnt work?
np.array([[1,2],[[1,2],[3,4]]])
Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: setting an array element with a sequence.
Thank you.
I believe numpy arrays must be rectangular, yours is jagged, instead try
x3d = np.array([[[1, 2], [1, 2], [3, 4]]]) x3d.shape
(1, 3, 2)
Note: 3 opening brackets, yours has 2 And single brackets around the 3 innermost arrays, yours has single brackets for the 1st, and double brackets around the 2nd and 3rd
On Tue, Dec 25, 2018, 6:20 PM Jeff <jeffp@vodafonemail.de wrote:
hello,
sorry newbe to numpy.
I want to define a threedim array. I know this works:
np.array([[[1,2],[3,4]],[[5,6],[7,8]]])
array([[[1, 2], [3, 4]],
[[5, 6], [7, 8]]])
But can you tell why this doesnt work?
np.array([[1,2],[[1,2],[3,4]]])
Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: setting an array element with a sequence.
Thank you. _______________________________________________ NumPyDiscussion mailing list NumPyDiscussion@python.org https://mail.python.org/mailman/listinfo/numpydiscussion
In the latest version of numpy, this runs without an error, although may or may not be what you want:
In [1]: np.array([[1,2],[[1,2],[3,4]]]) Out[1]: array([[1, 2], [list([1, 2]), list([3, 4])]], dtype=object)
Here the result is a 2x2 array, where some elements are numbers and others are lists.
On Wed, 26 Dec 2018 at 06:23 Mark Alexander Mikofski mikofski@berkeley.edu wrote:
I believe numpy arrays must be rectangular, yours is jagged, instead try
x3d = np.array([[[1, 2], [1, 2], [3, 4]]]) x3d.shape
(1, 3, 2)
Note: 3 opening brackets, yours has 2 And single brackets around the 3 innermost arrays, yours has single brackets for the 1st, and double brackets around the 2nd and 3rd
On Tue, Dec 25, 2018, 6:20 PM Jeff <jeffp@vodafonemail.de wrote:
hello,
sorry newbe to numpy.
I want to define a threedim array. I know this works:
np.array([[[1,2],[3,4]],[[5,6],[7,8]]])
array([[[1, 2], [3, 4]],
[[5, 6], [7, 8]]])
But can you tell why this doesnt work?
np.array([[1,2],[[1,2],[3,4]]])
Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: setting an array element with a sequence.
Thank you. _______________________________________________ NumPyDiscussion mailing list NumPyDiscussion@python.org https://mail.python.org/mailman/listinfo/numpydiscussion
NumPyDiscussion mailing list NumPyDiscussion@python.org https://mail.python.org/mailman/listinfo/numpydiscussion
Ewww, kinda wish that would be an error... It would be too easy for a typo to get accepted this way.
On Wed, Dec 26, 2018 at 1:59 AM Eric Wieser wieser.eric+numpy@gmail.com wrote:
In the latest version of numpy, this runs without an error, although may or may not be what you want:
In [1]: np.array([[1,2],[[1,2],[3,4]]]) Out[1]: array([[1, 2], [list([1, 2]), list([3, 4])]], dtype=object)
Here the result is a 2x2 array, where some elements are numbers and others are lists.
On Wed, 26 Dec 2018 at 06:23 Mark Alexander Mikofski < mikofski@berkeley.edu> wrote:
I believe numpy arrays must be rectangular, yours is jagged, instead try
x3d = np.array([[[1, 2], [1, 2], [3, 4]]]) x3d.shape
(1, 3, 2)
Note: 3 opening brackets, yours has 2 And single brackets around the 3 innermost arrays, yours has single brackets for the 1st, and double brackets around the 2nd and 3rd
On Tue, Dec 25, 2018, 6:20 PM Jeff <jeffp@vodafonemail.de wrote:
hello,
sorry newbe to numpy.
I want to define a threedim array. I know this works:
np.array([[[1,2],[3,4]],[[5,6],[7,8]]])
array([[[1, 2], [3, 4]],
[[5, 6], [7, 8]]])
But can you tell why this doesnt work?
np.array([[1,2],[[1,2],[3,4]]])
Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: setting an array element with a sequence.
Thank you. _______________________________________________ NumPyDiscussion mailing list NumPyDiscussion@python.org https://mail.python.org/mailman/listinfo/numpydiscussion
NumPyDiscussion mailing list NumPyDiscussion@python.org https://mail.python.org/mailman/listinfo/numpydiscussion
NumPyDiscussion mailing list NumPyDiscussion@python.org https://mail.python.org/mailman/listinfo/numpydiscussion
On 27/12/18 3:21 am, Benjamin Root wrote:
Ewww, kinda wish that would be an error... It would be too easy for a typo to get accepted this way.
On Wed, Dec 26, 2018 at 1:59 AM Eric Wieser <wieser.eric+numpy@gmail.com mailto:wieser.eric%2Bnumpy@gmail.com> wrote:
In the latest version of numpy, this runs without an error, although may or may not be what you want: In [1]: np.array([[1,2],[[1,2],[3,4]]]) Out[1]: array([[1, 2], [list([1, 2]), list([3, 4])]], dtype=object)  Here the result is a 2x2 array, where some elements are numbers and others are lists.
Specify the dtype explicitly: `dtype=int` or so, then NumPy will refuse to create a ragged array.
There has been occasional discussion of `dtype='notobject'`, but I don't think it resulted in an issue or PR.
Matti
The rationale for the change allowing that construction was twofold: it's easier to understand what has gone wrong when seeing the `list`s in the repr than it was from the cryptic error message; and there were some jagged cases that already succeeded in this way, and it was less confusing to be consistent.
I agree that the behavior is not terribly useful, and object arrays constructed containing lists are quite possibly something we should warn about.
Eric
On Thu, Dec 27, 2018, 2:22 AM Benjamin Root <ben.v.root@gmail.com wrote:
Ewww, kinda wish that would be an error... It would be too easy for a typo to get accepted this way.
On Wed, Dec 26, 2018 at 1:59 AM Eric Wieser wieser.eric+numpy@gmail.com wrote:
In the latest version of numpy, this runs without an error, although may or may not be what you want:
In [1]: np.array([[1,2],[[1,2],[3,4]]]) Out[1]: array([[1, 2], [list([1, 2]), list([3, 4])]], dtype=object)
Here the result is a 2x2 array, where some elements are numbers and others are lists.
On Wed, 26 Dec 2018 at 06:23 Mark Alexander Mikofski < mikofski@berkeley.edu> wrote:
I believe numpy arrays must be rectangular, yours is jagged, instead try
x3d = np.array([[[1, 2], [1, 2], [3, 4]]]) x3d.shape
(1, 3, 2)
Note: 3 opening brackets, yours has 2 And single brackets around the 3 innermost arrays, yours has single brackets for the 1st, and double brackets around the 2nd and 3rd
On Tue, Dec 25, 2018, 6:20 PM Jeff <jeffp@vodafonemail.de wrote:
hello,
sorry newbe to numpy.
I want to define a threedim array. I know this works:
> np.array([[[1,2],[3,4]],[[5,6],[7,8]]])
array([[[1, 2], [3, 4]],
[[5, 6], [7, 8]]])
But can you tell why this doesnt work?
> np.array([[1,2],[[1,2],[3,4]]])
Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: setting an array element with a sequence.
Thank you. _______________________________________________ NumPyDiscussion mailing list NumPyDiscussion@python.org https://mail.python.org/mailman/listinfo/numpydiscussion
NumPyDiscussion mailing list NumPyDiscussion@python.org https://mail.python.org/mailman/listinfo/numpydiscussion
NumPyDiscussion mailing list NumPyDiscussion@python.org https://mail.python.org/mailman/listinfo/numpydiscussion
NumPyDiscussion mailing list NumPyDiscussion@python.org https://mail.python.org/mailman/listinfo/numpydiscussion
There is a longstanding request to require an explicit optin for dtype=object: https://github.com/numpy/numpy/issues/5353
 Marten
participants (6)

Benjamin Root

Eric Wieser

Jeff

Mark Alexander Mikofski

Marten van Kerkwijk

Matti Picus