'How to construct a ndarray from a numpy array? python
I can't seem to convert it into an ndarray
in numpy, i've read http://docs.scipy.org/doc/numpy/reference/generated/numpy.ndarray.html but it didn't show me how i can convert my input data as shown below into an ndarray
.
How to construct a ndarray from a numpy array or a list of integer lists?
*What's the difference between ndarray and array?* I could just use an array
type right?
I have a list of integer counts like this
[[1, 2, 4, 1, 5],
[6, 0, 0, 0, 2],
[0, 0, 0, 1, 0]]
And i manage to use this code to create a np.array
as shown in http://docs.scipy.org/doc/numpy/reference/generated/numpy.array.html#numpy.array
import numpy as np
x = [[1, 2, 4, 1, 5],
[6, 0, 0, 0, 2],
[0, 0, 0, 1, 0]]
print np.array(x)
[out]:
[[1 2 4 1 5]
[6 0 0 0 2]
[0 0 0 1 0]]
But I can't change it into a np.ndarray
with this code:
import numpy as np
x = [[1, 2, 4, 1, 5],
[6, 0, 0, 0, 2],
[0, 0, 0, 1, 0]]
print np.ndarray(x)
I got an error:
Traceback (most recent call last):
File "/home/alvas/workspace/sklearntut/test.py", line 7, in <module>
print np.ndarray(x)
TypeError: an integer is required
How do I create a np.ndarray with the list of integer counts i've got? What integer is the TypeError talking about?
Solution 1:[1]
An ndarray
is a NumPy array.
>>> x = np.array([1, 2, 3])
>>> type(x)
<type 'numpy.ndarray'>
The difference between np.ndarray
and np.array
is that the former is the actual type, while the latter is a flexible shorthand function for constructing arrays from data in other formats. The TypeError
comes your use of np.array
arguments to np.ndarray
, which takes completely different arguments (see docstrings).
Solution 2:[2]
Though the accepted response is correct, that didn't help me actually create a 1-dimensional array of arrays.
As this thread is the first answer at Google, I post my work around, even if it isn't elegant solution (please don't hesitate to point one out to me):
import numpy as np
# Create example array
initial_array = np.ones(shape = (2,2))
# Create array of arrays
array_of_arrays = np.ndarray(shape = (1,), dtype = "object")
array_of_arrays[0] = initial_array
Be aware that array_of_arrays
is in this case mutable, i.e. changing initial_array
automatically changes array_of_arrays
.
Solution 3:[3]
I will combine the accepted solution with the fixed code.
As said in the accepted solution, an ndarray
is a NumPy array
.
This essentially means that you should use np.array
when constructing an ndarray from a list of lists, a list of tuples, a tuple of lists...
Fixed code fragment:
import numpy as np
x = [[1, 2, 4, 1, 5],
[6, 0, 0, 0, 2],
[0, 0, 0, 1, 0]]
# The difference: we call np.array
print np.array(x)
Hope this will help others out as this is the first Google answer.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | Fred Foo |
Solution 2 | Andarin |
Solution 3 | Lars Salembier |