Как преобразовать 3 списка в 1 массив 3D Numpy - PullRequest
5 голосов
/ 27 марта 2012

У меня есть три списка, которые я хочу преобразовать в один список. Когда я пытаюсь следующее получить эту ошибку

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

Я не увидел здесь ничего такого, что говорит, что вы можете дать ему только два аргумента

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

Вот код

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)

Заранее спасибо

Ответы [ 2 ]

5 голосов
/ 27 марта 2012

Попробуйте передать три списка как кортеж:

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

В документации numpy.array подпись для numpy.array равна

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

т. е. единственный аргумент object равенчто превращается в ndarray, каждый другой аргумент должен быть ключевым аргументом (отсюда и полученное вами сообщение об ошибке), который можно использовать для настройки создания массива.

Редактировать В ответ на комментарий Surfcast23 в IDE я попробовал следующее:

>>> 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)
0 голосов
/ 14 марта 2017

Я просмотрел ваш код и обнаружил, что для X, Y, Z отсутствует [].Массив не может принимать два массива D как один.Попробуйте поставить [X, Y, Z] для массива, и вы получите правильный ответ.

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...