私は主にデータ分析を行うためにnumpyを使用していますが、基礎となるプログラムをよく理解していないので、これは明らかかもしれません。
属性を割り当てるだけで設定することと、その属性をインプレースで変更するメソッドを呼び出すことの違いがわかりません。両方を実行できる例は次のとおりです。
In [1]: import numpy as np
In [2]: a = np.array([[1, 2, 3],
...: [4, 5, 6]])
In [3]: a.shape
Out[3]: (2, 3)
In [4]: a.reshape(3,2)
Out[4]:
array([[1, 2],
[3, 4],
[5, 6]])
In [5]: a
Out[5]:
array([[1, 2, 3],
[4, 5, 6]])
In [6]: a.resize(3,2)
In [7]: a
Out[7]:
array([[1, 2],
[3, 4],
[5, 6]])
In [8]: a.shape = (6,)
In [9]: a
Out[9]: array([1, 2, 3, 4, 5, 6])
In [10]: a.__setattr__('shape',(3,2))
In [11]: a
Out[11]:
array([[1, 2],
[3, 4],
[5, 6]])
6
入力との違いがわかりません8
。のように再形成されたオブジェクトを返すのではなく、明らかに両方ともそのa.shape
場で属性を変更します4
。彼らは両方とものように呼び出すだけa.__setattr__()
です10
か?もしそうなら、なぜそれらは両方とも存在するのですか?
a.resize()
(割り当てられたメモリを増減するための追加容量があることは承知していますが、ここでは使用していません---この重複は、他の容量を追加するメソッドでのみ存在しますか?)