如何将3个列表转换为1个3D Numpy数组

时间:2012-03-27 09:19:31

标签: python arrays numpy

我有三个列表要转换为一个列表。当我尝试以下操作时出现此错误

 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 个答案:

答案 0 :(得分:5)

尝试将三个列表作为元组传递:

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)

答案 1 :(得分:0)

我查看了你的代码,发现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)