将数组数组转换为 NumPy 的 ndarray 数组



我一直在尝试用ndarray的numpy ndarray转换数组的数组。

这是我的dtype:

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: expected a readable buffer object

但是,如果我使用仅包含行中每个单个元素的数组调用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)

Demo在这里运行。但是这样你得到一个1元素的数组返回shape = (1,)(1元素是元组)。


也可以使用'object'作为dtype,例如-

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

尽管这确实导致数组具有正确的形状,但由于混合类型(但我猜您期望),有些事情可能无法工作。

相关内容

  • 没有找到相关文章

最新更新