How to convert 3 lists to 1 3D Numpy array

I have three lists that I want to convert to one list. When I try the following get this error

 A = numpy.array(X,Y,Z,dtype=float)
 ValueError: only 2 non-keyword arguments accepted

      

I haven't seen anything here that says you can only give two arguments

http://docs.scipy.org/doc/numpy/reference/arrays.ndarray.html

Here is the code

import numpy
from numpy import *

X = []
Y = []
Z = []

f = open(r'C:\My.txt')
f.readline()
for line in f:
 if line != '':
     line = line.strip()
     columns = line.split()
     x = columns[2]
     y = columns[3]
     z = columns[4]
     X.append(x)
     Y.append(y)                #appends data in list
     Z.append(z)



A = numpy.array(X,Y,Z,dtype=float)
A.shape(3,3)
print(A)

      

thanks in advance

+3


source to share


2 answers


Try passing three lists as a tuple:

A = numpy.array((X, Y, Z), dtype=float)

      

In the documentation, the numpy.array

signature for numpy.array

is

numpy.array (object, dtype = None, copy = True, order = None, subok = False, ndmin = 0, maskna = None, ownmaskna = False)



i.e. the only argument object

is what turns into an ndarray, every other argument must be a keyword argument (hence the error message you were getting) that can be used to customize the creation of the array.

Edit In response to Surfcast23's comment in the IDE, I've tried the following:

>>> import numpy

>>> x = [0, 0, 0, 0]
>>> y = [3, 4, 4, 3]
>>> z = [3, 4, 3, 4]

>>> A = numpy.array((x, y, z), dtype=float)
>>> A
array([[ 0., 0., 0., 0.],
       [ 3., 4., 4., 3.],
       [ 3., 4., 3., 4.]])
>>> A.shape
(3L, 4L)

      

+4


source


I looked at your code and found out that X [] is missing for X, Y, Z. An array cannot take two D arrays as one. Try putting [X, Y, Z] for an array and you will get the correct answer.



import numpy
from numpy import *

X = []
Y = []
Z = []

f = open(r'C:\My.txt')
f.readline()
for line in f:
 if line != '':
     line = line.strip()
     columns = line.split()
     x = columns[2]
     y = columns[3]
     z = columns[4]
     X.append(x)
     Y.append(y)                #appends data in list
     Z.append(z)



A = numpy.array([X,Y,Z],dtype = float)
A.shape(3,3)
print(A)

      

0


source







All Articles