110

I have a list in python and I want to convert it to an array to be able to use ravel() function.

kenorb
  • 155,785
  • 88
  • 678
  • 743
user2229953
  • 1,569
  • 3
  • 16
  • 24
  • 2
    Please, try to answer requests for clarifications and improve your questions instead of spawning lots of not-really-good questions. Finally, read carefully [this answer](http://stackoverflow.com/a/15867578/1191119). I think it solves your big problem... – jorgeca Apr 07 '13 at 22:30

6 Answers6

242

Use numpy.asarray:

import numpy as np
myarray = np.asarray(mylist)
MarredCheese
  • 17,541
  • 8
  • 92
  • 91
A. Rodas
  • 20,171
  • 8
  • 62
  • 72
  • 27
    Actually, `myarray = np.array(mylist)` should be enough. – fgb Apr 07 '13 at 22:23
  • 11
    well, asarray it's safer as it won't copy arrays but simply return them, so it's a good habit to use it unless one it's sure to wawnt a copy of the original data – EnricoGiampieri Apr 07 '13 at 22:25
  • 1
    @EnricoGiampieri, fair, but wouldn't you need to get an array out of this no matter what? I guess I don't follow how you wouldn't get either command to generate a new array object. – fgb Apr 07 '13 at 22:29
  • both command will create a new array starting from a list, that's for sure, but often the point is to convert an input to a specific format to apply certain method, and this looks more like the case of the OP. using asarray is a good habit unless one is certain that a new copy is needed. simply typing `array` is enough, but why let slip the possibility to educate the OP to some good habit while we are here? – EnricoGiampieri Apr 09 '13 at 14:41
  • I just wanted to say that @fgb proposed an adequate solution. the '.asarray' function returns a numpy object whereas '.array returns you an array directly. Anyways, thanks to both of you guys! – Adrian Grzywaczewski Mar 10 '18 at 18:14
7

create an int array and a list

from array import array
listA = list(range(0,50))
for item in listA:
    print(item)
arrayA = array("i", listA)
for item in arrayA:
    print(item)
das-g
  • 9,718
  • 4
  • 38
  • 80
Uszkai Attila
  • 71
  • 1
  • 2
6

I wanted a way to do this without using an extra module. First turn list to string, then append to an array:

dataset_list = ''.join(input_list)
dataset_array = []
for item in dataset_list.split(';'): # comma, or other
    dataset_array.append(item)
D_C
  • 370
  • 4
  • 22
2

If all you want is calling ravel on your (nested, I s'pose?) list, you can do that directly, numpy will do the casting for you:

L = [[1,None,3],["The", "quick", object]]
np.ravel(L)
# array([1, None, 3, 'The', 'quick', <class 'object'>], dtype=object)

Also worth mentioning that you needn't go through numpy at all.

Paul Panzer
  • 51,835
  • 3
  • 54
  • 99
-2

Use the following code:

import numpy as np

myArray=np.array([1,2,4])  #func used to convert [1,2,3] list into an array
print(myArray)
Masoud Rahimi
  • 5,785
  • 15
  • 39
  • 67
Vinay
  • 1
  • 1
-13

if variable b has a list then you can simply do the below:

create a new variable "a" as: a=[] then assign the list to "a" as: a=b

now "a" has all the components of list "b" in array.

so you have successfully converted list to array.

Mayank Sharma
  • 123
  • 2
  • 8
  • 8
    Actually, no ... this is completely wrong. All you'll have is two variables pointing at the same list, not a numpy array. – Ajean Nov 25 '15 at 22:05