2015-09-25 47 views
2

我一直在嘗試使用ndarray的numpy ndarray來變換數組的數組。將數組變換爲NumPy的ndarray中的示例

這是我的D型:

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

Buuuuut,如果我叫np.array以與陣列僅包含我行的每個單獨的元件,並使用適當的數據類型(這樣做是使用具有枚舉迴路和分裂dt),它的工作原理。是這樣的:

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

任何想法,請?

回答

1

似乎這個工作,你需要將內部列表轉換爲元組。示例 -

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) 

演示運行here。但有了這個,你可以得到一個1元素的數組012返回shape = (1,)(1元素是元組)。


您還可以使用'object'爲D型,Example -

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

即使這樣做導致與正確形狀的陣列,有些事情可能不是因爲混合類型的工作(但我猜你期望的)。