質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
NumPy

NumPyはPythonのプログラミング言語の科学的と数学的なコンピューティングに関する拡張モジュールです。

Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

Q&A

2回答

762閲覧

Numpyのdtypeについて

yamato_user

総合スコア2321

NumPy

NumPyはPythonのプログラミング言語の科学的と数学的なコンピューティングに関する拡張モジュールです。

Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

0グッド

0クリップ

投稿2019/05/14 02:56

Numpy配列のobjectって結局何ですか?正体がよくわかりません(Pandasでも同様)
objectの例

Python

1> train_df_x 2array([[8200, None, None, ..., 0, 0, 0], 3 [7000, None, None, ..., 0, 1, 0], 4 [None, None, None, ..., 0, 0, 0], 5 ..., 6 [12700, None, None, ..., 0, 0, 0], 7 [None, None, None, ..., 0, 0, 0], 8 [None, None, None, ..., 0, 0, 0]], dtype=object) 9> type(train_df_x[0][-1]) 10int

floatの例

Python

1> train_df_x.astype(float) 2array([[8.2e+03, nan, nan, ..., 0.0e+00, 0.0e+00, 0.0e+00], 3 [7.0e+03, nan, nan, ..., 0.0e+00, 1.0e+00, 0.0e+00], 4 [ nan, nan, nan, ..., 0.0e+00, 0.0e+00, 0.0e+00], 5 ..., 6 [1.27e+04, nan, nan, ..., 0.0e+00, 0.0e+00, 0.0e+00], 7 [ nan, nan, nan, ..., 0.0e+00, 0.0e+00, 0.0e+00], 8 [ nan, nan, nan, ..., 0.0e+00, 0.0e+00, 0.0e+00]]) 9 10> type(train_df_x.astype(float)[0][-1]) 11numpy.float64

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

pythonのオブジェクト(普通のインスタンス)が格納されています(実際に格納されているのは参照ですが)。要するに、なんでも入れられます。

python3のクラスは基本的にobjectクラスを継承していますので、object型として格納されるのだと思います(アバウトな説明)。

以下の例を見てください。

python

1>>> import numpy as np 2>>> a = np.array([1,2,3]) 3>>> b = np.array([4,5,6], dtype=object) 4>>> a 5array([1, 2, 3]) 6>>> b 7array([4, 5, 6], dtype=object) 8>>> type(a[0]) 9<class 'numpy.int64'> 10>>> type(b[0]) 11<class 'int'> 12>>> c = np.array([{"hoge":"fuga"}, 42, range(10)]) 13>>> c 14array([{'hoge': 'fuga'}, 42, range(0, 10)], dtype=object)

投稿2019/05/14 05:06

編集2019/05/14 05:07
hayataka2049

総合スコア30933

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

通常はその型の値が実際に格納されるのに対し、dtype=objectの場合はその参照値(ポインタ)が格納されます。
参考:What does dtype=object mean while creating a numpy array?
以下の検証コードにおいて、文字列を格納した場合がわかりやすいかと思います。

Python

1import numpy as np 2 3a = np.array(['ABCDE']) 4print(a.nbytes) # 20 文字列長に比例 5print(type(a[0])) # <class 'numpy.str_'> 6 7a = np.array(['ABCDE'], dtype=object) 8print(a.nbytes) # 8 文字列長で不変 9print(type(a[0])) # <class 'str'> 10 11a = np.array([123]) 12print(a.nbytes) # 4 実値の格納サイズ 13print(type(a[0])) # <class 'numpy.int32'> 14 15a = np.array([123], dtype=object) 16print(a.nbytes) # 8 ポインタの格納サイズ 17print(type(a[0])) # <class 'int'>

投稿2019/05/14 04:05

can110

総合スコア38266

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問