2017-01-04 7 views
0

浮動小数点型の配列をインデックスとして使用したい(たとえば、浮動小数点型のインデックスを持つPandasシリーズなど)。だから私に説明させてください。私は次のようなものが欲しい:浮動小数点数からnumpyまでの配列

i = np.array([(5.,1), (6.,2)], dtype=[('foo', 'f4'),('bar', 'i4')]) 

最初のタイプ( 'foo'タイプ)をインデクサーとして使用できる場合は、だから私は

print(i[:5.5]) 

を行うことができ、それが1、または(5., 1)を印刷します。

私はNumpyで可能だと確信しています、私はちょうど方法を知らない。

+0

浮き*スライスしたいようです。 –

答えて

2

あなたは論理的なインデックスが必要になる場合があります。

i[i['foo'] < 5.5] 

# array([(5.0, 1)], 
#  dtype=[('foo', '<f4'), ('bar', '<i4')]) 
0

i[:5.5]は、明らかな意味を持っていません。

i[:5]は、配列(またはリスト)の最初の5つの要素を意味します。 i[:6]最初に6. 5.5とは何が関係していますか? floor(5.5)?天井? 5と半分の要素を返しますか? 5要素と5と6の間の線形補間?

実際:5.5作品(1.11)が、警告して:あなたの構造化された配列で

In [346]: np.arange(10)[:5] 
Out[346]: array([0, 1, 2, 3, 4]) 
In [347]: np.arange(10)[:5.5] 
/usr/local/bin/ipython3:1: VisibleDeprecationWarning: using a non-integer number instead of an integer will result in an error in the future 
    #!/usr/bin/python3 
Out[347]: array([0, 1, 2, 3, 4]) 

、レコードインデックスは、同じように動作します:

In [349]: i = np.array([(5.,1), (6.,2)], dtype=[('foo', 'f4'),('bar', 'i4')]) 
In [350]: i[:5] 

それは終わりを超えてスライスする大丈夫です - それはただすべてを返します。

Out[350]: 
array([(5.0, 1), (6.0, 2)], 
     dtype=[('foo', '<f4'), ('bar', '<i4')]) 
In [351]: i[:5.5] 
/usr/local/bin/ipython3:1: VisibleDeprecationWarning: using a non-integer number instead of an integer will result in an error in the future 
    #!/usr/bin/python3 
Out[351]: 
array([(5.0, 1), (6.0, 2)], 
     dtype=[('foo', '<f4'), ('bar', '<i4')]) 

================ numpy

インデックスはカウントだけの方法です。インデックスまたはラベリングリストまたは配列はありません。それはpandasが追加したものですが、numpyの一部ではありません。 i配列では、フィールドの名前は次のとおりです。 i['foo']。列見出しのように見えますが、構造化フィールドと2d列を混同することは危険です。

関連する問題