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

2024-04-26 12:06:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我有三个列表要转换成一个列表。当我尝试以下一个get this错误时

 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)

提前感谢


Tags: columnsinimportnumpyonly列表get错误
2条回答

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

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

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

^{}文档中,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)

相关问题 更多 >