Sponsored Links
Pythonでは
タプル……要素の変更ができない
リスト……要素を変更可能
と区別されます。
numpy.arrayオブジェクトはタプルからでもリストからでも作成できるようです。タプルからarrayをつくったときと、リストからarrayをつくったときの違いがよくわからなかったのでまとめてみました。
目次
「リストのリスト」と「タプルのリスト」
1 2 3 4 5 6 7 8 | list_of_tuples = [(1,2),(3,4)] # タプルを要素に持つリスト list_of_lists = [[1,2],[3,4]] # リストを要素に持つリスト list_of_tuples[0][0] = 100 # 要素はタプル要素なので変更不可 list_of_lists[0][0] = 100 # 要素はリスト要素なので変更可能 list_of_tuples[0] = [100,100] # 要素はリスト要素なので変更可能 |
まず、numpy.arrayではなくて、Pythonのリストを使ってみます。
4行目ではタプルの要素を変更しようとしているのでエラーになります。
5行目については変更しようとしているのがリスト要素なので問題ありません。
「リストのリストからnumpy.array」と「タプルのリストからnumpy.array」
では上記オブジェクトからnumpy.arrayオブジェクトを生成してから、値を操作してみます。
両方とも、変更できました。タプルオブジェクトからarrayをつくろうと、リストからつくろうと値の変更は出来るようです。
1 2 3 4 5 6 7 8 9 10 | list_of_tuples = [(1,2),(3,4)] # タプルを要素に持つリスト list_of_lists = [[1,2],[3,4]] # リストを要素に持つリスト arr_from_T = np.array(list_of_tuples) # list_of_tuplesからNumpy.Arrayを作成 arr_from_L = np.array(list_of_lists) # list_of_listsからNumpy.Arrayを作成 arr_from_T[0][0] = 100 arr_from_L[0][0] = 100 arr_from_T[0] = [100,100] |
「タプルのタプル」と「リストのタプル」
1 2 3 4 5 6 7 | tuple_of_tuples = ((1,2),(3,4)) # タプルを要素に持つタプル tuple_of_lists = ([1,2],[3,4]) # リストを要素に持つタプル tuple_of_tuples[0][0] = 100 # 要素はタプル要素なので変更不可 tuple_of_lists[0][0] = 100 # 要素はリスト要素なので変更可能 tuple_of_lists[0] = [100,100] # 要素はタプル要素なので変更不可 |
「タプルのタプルからnumpy.array」と「リストのタプルからnumpy.array」
これでも値の変更は可能でした。
1 2 3 4 5 6 7 8 9 10 | tuple_of_tuples = ((1,2),(3,4)) # タプルを要素に持つタプル tuple_of_lists = ([1,2],[3,4]) # リストを要素に持つタプル arr_from_T = np.array(tuple_of_tuples) # tuple_of_tuples からnumpy.arrayを作成 arr_from_L = np.array(tuple_of_lists) # tuple_of_lists からnunpy.arrayを作成 arr_from_T[0][0] = 100 arr_from_L[0][0] = 100 arr_from_L[0] = [100,100] |
まとめ
numpy.arrayオブジェクトを生成する際にリストを使おうとタプルを使おうと生成したarrayオブジェクトの要素は変更可能のようです。
Sponsored Links
タプルもリストも要素の変更が可能になってますよ
ごんぞう様、ご指摘ありがとうございます!修正しました。
今後もどうぞよろしくお願いします。