How to construct a ndarray from a numpy array? python

56,326

Solution 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

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 .

Share:
56,326
alvas
Author by

alvas

食飽未?

Updated on June 21, 2020

Comments

  • alvas
    alvas almost 4 years

    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?

  • taras
    taras almost 6 years
    There is another way to one more dimension, you can use numpy.expand_dims, example: np.expand_dims(initial_array, axis=0)
  • NoName
    NoName over 4 years
    So why didn't np.ndarray(x) work? Both np.ndarray and np.array's first parameter is shape.