Tengo tres listas que quiero convertir en una lista. Cuando me pruebe el siguiente a este error

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

Yo no veo nada aquí que dice que solo dan dos argumentos

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

Aquí está el código

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)

Gracias en advanceh

  • Dar un ejemplo de su tres listas y de sus tres dimensiones numpy matriz que desea obtener.
  • ahora mismo estoy usando un caso de prueba cuando las listas son [0,0,0,0], [3,4,4,3], [3,4,3,4] lo que me gustaría es que la lista de la primera columna de la lista dos de la segunda lista de tres en el tercero. Finalmente esto implica tres muy grandes listas que se deben convertir en una matriz para el análisis. Gracias
  • Podrá obtener una matriz de dos dimensiones, tres dimensiones. La longitud de la mayor dimensión será de tres.
InformationsquelleAutor Surfcast23 | 2012-03-27

2 Comentarios

  1. 5

    Intentar pasar sus tres listas como una tupla:

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

    En el numpy.matriz documentación de la firma para numpy.array es

    numpy.array(objeto, dtype=Ninguno, copia=True, orden=Ninguno, subok=False, ndmin=0, maskna=Ninguno, ownmaskna=False)

    es decir, el único argumento object es lo que se convirtió en un ndarray, cada argumento debe ser una palabra clave argumento (de ahí el mensaje de error que usted estaba recibiendo) que se pueden utilizar para personalizar la creación de la matriz.

    Editar En respuesta a Surfcast23 del comentario, en el IDE he intentado lo siguiente:

    >>> 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)
    • Trató de dar la tupla, pero tiene un tuple not callable error
    • A continuación, las listas no son lo que dicen o lo que usted espera que ellos sean. Esto funciona bien para mí, con su ejemplo listas dado en su comentario a tu pregunta (véase mi edición).
    • Me acaba de imprimir en las listas y esto es lo que tengo ['0', '0', '0', '0']. Creo que las comillas tal vez el problema ¿qué te parece?
    • No debería ser un problema. Acabo de probar el ejemplo anterior de nuevo, pero con x = .. reemplazado con x = ['0', '0', '0', '0'] y y y z reemplazado similiarly y me da exactamente el mismo resultado para A. El dtype argumento de numpy.array va a convertir cadenas a, en este caso, los flotadores.
    • Suena como que usted está haciendo x.shape(). No es una función, es una tupla. Usted no puede llamar. Es sólo shape = x.shape.
    • De acuerdo. @Surfcast23 puede modificar la forma de una matriz mediante el uso de A.shape = (3, 3) en lugar de A.shape(3,3). Sin embargo, no es necesario el uso de esta en todo su código en tu pregunta. De hecho, en el ejemplo que se modifique la forma de una matriz a una matriz con un número diferente de elementos, lo que plantearía un ValueError excepción.
    • Gracias chicos, agradezco la ayuda!

  2. 0

    Me fui a través de su código y enteré de que hay una falta de [] de X,Y,Z. La matriz no puede tomar dos D de la matriz como uno. Trate de poner [X,Y,Z] para la matriz y obtendrá la respuesta correcta.

    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)

Dejar respuesta

Please enter your comment!
Please enter your name here