简体   繁体   中英

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?

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).

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, ie changing initial_array automatically changes array_of_arrays .

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.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM