Python 将数组的数组转换为NumPy';恩达里的恩达里

Python 将数组的数组转换为NumPy';恩达里的恩达里,python,arrays,numpy,multidimensional-array,Python,Arrays,Numpy,Multidimensional Array,我一直在尝试用一堆数组来转换数组 这是我的数据类型: dt = 'i8,i8,i8,i8,i8,i8,i8,i8,i8,i8,i8,i8,i8,f8,i8,i8,f8,f8,f8,a50,a50,a50,a50' 这是我的数据: # data array reduced to one row for sake of readability data = [[45608L, 0L, 46115L, 11952L, 11952L, 0, 0, 0, 0, 0, 11951L, 11951L, 46

我一直在尝试用一堆数组来转换数组

这是我的数据类型:

dt = 'i8,i8,i8,i8,i8,i8,i8,i8,i8,i8,i8,i8,i8,f8,i8,i8,f8,f8,f8,a50,a50,a50,a50'
这是我的数据:

# data array reduced to one row for sake of readability
data = [[45608L, 0L, 46115L, 11952L, 11952L, 0, 0, 0, 0, 0, 11951L, 11951L, 46176L, 9.0, 0, 1, 1407340577.0, 1407340577.0, 0, 'Simulation Movement', 'planned', '', ''],]
我已经尝试过这些方法:

np.array(data, dt)
np.array([np.array(row, dt) for row in data])
但当我运行这两个时,我得到:

TypeError:应为可读缓冲区对象

Buuuuut,如果我调用
np.array
,数组只包含行中的每个元素,并使用适当的数据类型(这是使用带有枚举的循环和拆分
dt
),它就可以工作。是这样的:

for row in data:
  for index, value in enumerate(row):
    np.array([value,], dt.split(',')[index])

有什么想法吗

要使其正常工作,您需要将内部列表转换为元组。范例-

import numpy as np

dt = 'i8,i8,i8,i8,i8,i8,i8,i8,i8,i8,i8,i8,i8,f8,i8,i8,f8,f8,f8,a50,a50,a50,a50'

data = [[45608L, 0L, 46115L, 11952L, 11952L, 0, 0, 0, 0, 0, 11951L, 11951L, 46176L, 9.0, 0, 1, 1407340577.0, 1407340577.0, 0, 'Simulation Movement', 'planned', '', ''],]

result = np.array(map(tuple, data),dt)
演示运行。但是通过这个,您得到了一个1个元素的数组返回
shape=(1,)
(1个元素是元组)


您还可以使用
'object'
作为数据类型

尽管这确实会产生一个形状正确的数组,但由于混合类型的缘故,有些事情可能无法工作(但我想您应该会这样)

result1 = np.array(data,'object')