2016-07-25 155 views
0

我有一个numpy的数组是这样的:拆分numpy的阵列分成两个numpy的阵列

A=[(datetime.datetime(2016, 6, 8, 12, 37, 27, 826000), 3.0) 
    (datetime.datetime(2016, 6, 8, 12, 37, 27, 827000), nan) 
    (datetime.datetime(2016, 6, 8, 12, 37, 27, 832000), nan) 
    (datetime.datetime(2016, 6, 8, 12, 37, 27, 833000), nan) 
    (datetime.datetime(2016, 6, 8, 12, 37, 27, 837000), 3.0) 
    (datetime.datetime(2016, 6, 8, 12, 37, 27, 837000), 35.0)] 

而且我想把它分成2个numpy的数组:

B=[(datetime.datetime(2016, 6, 8, 12, 37, 27, 826000), 
    (datetime.datetime(2016, 6, 8, 12, 37, 27, 827000), 
    (datetime.datetime(2016, 6, 8, 12, 37, 27, 832000), 
    (datetime.datetime(2016, 6, 8, 12, 37, 27, 833000), 
    (datetime.datetime(2016, 6, 8, 12, 37, 27, 837000), 
    (datetime.datetime(2016, 6, 8, 12, 37, 27, 837000)] 

C=[3.0,nan,nan,nan,3.0,35.0] 

给你更多的细节这numpy的阵列起初一个dictionnary,我已经把它转换成numpy的数组,你可以找到下面的代码:

def convertarray(dictionary): 
    names=['id','data'] 
    formats=['datetime64[ms]','f8'] 
    dtype=dict(names=names, formats=formats) 
    result=np.array(dictionary.items(),dtype) 
    return result 
+1

你有一个字段/字段名的dtype,或者它真的是元组?你应该显示数组dtype。 – mdurant

+0

查阅文档:http://docs.scipy.org/doc/numpy/user/quickstart.html#indexing-slicing-and-iterating,http://docs.scipy.org/doc/numpy/reference/ arrays.indexing.html – wwii

+0

@mdurant谢谢我发现了一些有用的东西 – ibia75

回答

1

如果你只是一个有dtype=object香草阵列,我觉得你最好的办法是通过循环旧的一对夫妇列表内涵,只是构建新的数组:

进口numpy的从numpy的进口楠 进口日期时间NP

A=np.array([(datetime.datetime(2016, 6, 8, 12, 37, 27, 826000), 3.0), 
    (datetime.datetime(2016, 6, 8, 12, 37, 27, 827000), nan), 
    (datetime.datetime(2016, 6, 8, 12, 37, 27, 832000), nan), 
    (datetime.datetime(2016, 6, 8, 12, 37, 27, 833000), nan), 
    (datetime.datetime(2016, 6, 8, 12, 37, 27, 837000), 3.0), 
    (datetime.datetime(2016, 6, 8, 12, 37, 27, 837000), 35.0)]) 

print(A.dtype) 

times = np.array([x[0] for x in A]) 
values = np.array([x[1] for x in A]) 

print(times) 
print(values) 

随着中说,它可能稍微干净使用记录阵列:

import numpy as np 
from numpy import nan 
import datetime 

A=np.array([(datetime.datetime(2016, 6, 8, 12, 37, 27, 826000), 3.0), 
    (datetime.datetime(2016, 6, 8, 12, 37, 27, 827000), nan), 
    (datetime.datetime(2016, 6, 8, 12, 37, 27, 832000), nan), 
    (datetime.datetime(2016, 6, 8, 12, 37, 27, 833000), nan), 
    (datetime.datetime(2016, 6, 8, 12, 37, 27, 837000), 3.0), 
    (datetime.datetime(2016, 6, 8, 12, 37, 27, 837000), 35.0)], 
    dtype=[('time', object), ('value', float)]) 

print(A.dtype) 

print(A['time']) 
print(A['value']) 
+0

不错,我不知道记录数组甚至存在。 –

+0

@DietrichEpp - 是的。我没有多次使用它们,但我确信其他人有。他们主要生活在['numpy.recarray'](http://docs.scipy.org/doc/numpy/reference/generated/numpy.recarray.html)命名空间。 – mgilson

+0

@mgilson你刚刚救我的工作非常感谢你! – ibia75

-1

你可能想SLI数据。为该维度插入:将选择该维度的所有元素。

B = A[:, 0] 
C = A[:, 1] 
+0

我之前尝试过,它不起作用:/ – ibia75

+1

这不是一个多维数组 - 它是一维的,但是具有复合dtype。 – mdurant