2017-12-30 18 views
1

文字列を含むndarrayの場合、返されるdtypeはdtype(S#)という形式になります。#は文字列の長さを表します。Pythonの文字列を含むndarrayのdtype

result of dtype attribute

図にリストから生成される 'アレイ示すように[1、 '2'、 '3']。配列が作成されると、すべての要素が文字列型になります。配列 'b'はリスト['1'、2、 '3']から作成されます。

a.dtypeはS21を与え、b.dtypeはS1を与える。 aとbの両方の要素の長さは1です。なぜ、すべての要素の長さが1であっても、最初の配列の要素の長さは21となりますか?

1が9223372036854775807に置き換えられても、dtypeは 'S21'になります.9223372036854775808を使用すると、dtypeは 'S20'になります。これはどうして起こるのですか 誰か説明してください

答えて

0

np.arrayはコンパイルされたコードなので、何が起こっているのかを正確に見るためには、私はどんなドキュメンテーションを見ても思い出せません。したがって、最も簡単なことは、いくつかの値を試してパターンを探すことだけです。

最初の要素が文字列の場合は、最も長い文字列(数値の場合はstr(i))が使用されているようです。

1番目が数字の場合は、デフォルトのサイズで開始されます。

dtypeが文字列の一部を切り捨てない限り、この動作についてあまり心配する必要はありません。重要な場合は、自分の長さを定義することをお勧めします。

+0

リスト[True、 'a']から配列を作成しようとしました。生成された配列はdtype 'S5'を持ちます。 dtypeは、リストの最初の要素が整数の場合にのみ 'S21'を表示します。最初の要素がfloat値の場合、生成された配列のdtypeは 'S32'と表示されます。 – Sharon

+0

もう1つの論理値は5文字のFalseです。他の値は、整数と浮動小数点数の最大印刷幅、またはそれに何らかの形で接続されている可能性があります。 – hpaulj

+0

genfromtxtと 'dtype = None'のときのdtypeの選択方法を見ることができます。列に数字と文字列が混在していたり​​、誤って文字列ヘッダーが含まれている場合そのコードのほとんどはPythonです。 – hpaulj

関連する問題