costrouc
costrouc

Reputation: 3175

Numpy np.array with dtype TypeError

Description

I have spent about an hour trying to hunt down a numpy array construction error. I must not be using numpy dtypes correctly but the error message is not descriptive enough and I am not given a good enough stack trace to find the error.

Simplified Example that creates same error:

 import numpy as np
 names = ['id', 'x']
 formats = [np.int64, np.float64]
 np.array([1, 1.0], dtype={'names': names, 'formats': formats})

The following code results in the error

 ----> 1 np.array([1, 1.0], dtype={'names': names, 'formats': formats})
 TypeError: a bytes-like object is required, not 'int'

So i get that the error occurs from the first element being an int but why is it expecting a bytes like object?

Answer: it has nothing to do with the fact that the first element is in int. The list needs to be a tuple see below.

Upvotes: 3

Views: 7249

Answers (1)

costrouc
costrouc

Reputation: 3175

The solution is that numpy requires a single tuple or list of tuples. Not a list of lists or list.

The following works

 np.array((1, 1.0), dtype={'names': names, 'formats': formats})

I find it frustrating that numpy gives no indication in the error that this is what is expected.

Upvotes: 6

Related Questions