8181yuuta のすべての投稿

関数ndarray.repeatの使い方の例

関数の機能:配列の要素を繰り返し並べて作った配列を返却

例1 : 軸の指定なし

>>> a
array([[0, 1],
       [2, 3]])
>>> a.repeat(2)
array([0, 0, 1, 1, 2, 2, 3, 3])
パラメータの数字は繰り返し回数です。
ここでは2と指定したので、配列の各要素が2回ずつ繰り返し並べられた配列が返却されています。
なお、軸を指定しない場合、1次元化した配列に対して処理が行われます。

例2 : 軸を指定

>>> a.repeat(2, axis=0)
array([[0, 1],
       [0, 1],
       [2, 3],
       [2, 3]])
>>> a.repeat(2, axis=1)
array([[0, 0, 1, 1],
       [2, 2, 3, 3]])
軸(axis)を指定すると、その軸の方向に要素が繰り返し並べられます。
axis=0 : 縦方向
axis=1 : 横方向

関数ndarray.ravelの使い方の例

関数の機能:次元を1に落とした配列を返却

例1 : 行優先で1次元化

>>> a = np.array([[1, 2, 3],
	          [4, 5, 6],
	          [7, 8, 9]])
>>> a.ravel()
array([1, 2, 3, 4, 5, 6, 7, 8, 9])
パラメータ指定なしだと、行優先で1次元化されます。

例2 : 列優先で1次元化

>>> a.ravel(order='F')
array([1, 4, 7, 2, 5, 8, 3, 6, 9])
列優先で1次元化したい場合、orderのパラメータを'F'とします。
関連項目
関数ndarray.reshapeの使い方の例
関数ndarray.resizeの使い方の例
関数ndarray.squeezeの使い方の例
関数ndarray.flattenの使い方の例
属性ndarray.ndimの使い方の例
属性ndarray.shapeの使い方の例
属性ndarray.size, ndarray.itemsize, ndarray.nbyteの使い方の例
属性ndarray.stridesの使い方の例

関数ndarray.putの使い方の例

関数の機能:配列の特定の要素の値を置き換える

例1 : 1次元の配列の場合

a = np.array([1, 2, 3])
>>> a.put([0, 2], [7, 12])
>>> a
array([ 7,  2, 12])
パラメーターは、1つ目が要素のインデックス、2つ目が置き換える値です。

例2 : 2次元の配列の場合

>>> a = np.array([[5, 7, 1],
	          [2, 4, 9]])
>>> a.put([0, 5], [18, 12])
>>> a
array([[18,  7,  1],
       [ 2,  4, 12]])
インデックスの値は配列の次元を1次元にして考えます。
ndarray.putの説明図

関数ndarray.nonzeroの使い方の例

関数の機能:ゼロでない要素のインデックスを返却

>>> a = np.array([[0, 7, 0],
	          [0, 1, 0],
	          [4, 0, 0]])
>>> a.nonzero()
(array([0, 1, 2]), array([1, 1, 0]))
返却値はタプル型で、1つ目の要素が縦方向(axis=0)のインデックス、2つ目の要素が横方向(axis=1)のインデックスを示しています。

関数ndarray.itemの使い方の例

関数の機能:要素をコピーしてPythonの標準スカラー値として返却

>>> a = np.array([[0, 1, 2],
	          [3, 4, 5],
	          [6, 7, 8]])
>>> a.item((1, 2))
5
インデックス表記を使って、a[1,2] と書くのと同じ様に見えますが、返却値のオブジェクトの種類が異なります。
>>> type(a[1,2])
<class 'numpy.int64'>
>>> type(a.item((1, 2)))
<class 'int'>

関数ndarray.getfieldの使い方の例

関数の機能:各要素のデータの一部分を指定した型のデータとした配列を返却

例1 : 文字列型の一部を取り出した配列を作る

a = np.array(['abcde', 'fghij', '12345', 'xyz'])
>>> a.getfield('U1')           # 1文字目を取り出す
array(['a', 'f', '1', 'x'], dtype='<U1')
>>> a.getfield('U1', offset=4) # 2文字目を取り出す
array(['b', 'g', '2', 'y'], dtype='<U1')
>>> a.getfield('U2', offset=8) # 3〜4文字目を取り出す
array(['cd', 'hi', '34', 'z'], dtype='<U2')
offset には、取り出したいデータの位置をバイト数で指定します。上の例では、一文字が4バイトなので、2文字目から取り出す時はoffset=4、3文字目から取り出す時はoffset=8としています。
なお、データの大きさは下記のように配列の1要素のサイズを調べることにより把握できます。この例では5文字で20バイトなので、1文字は4バイトということが判ります。
>>> a.dtype.itemsize    # 1要素のバイト数
20
>>> a.dtype
dtype('<U5')

例2 : 複素数型の配列から実数部分と虚数部分をそれぞれ取り出した配列を作る

>>> a = np.ones((2,2)) + np.eye(2) * 2j
>>> a
array([[1.+2.j, 1.+0.j],
       [1.+0.j, 1.+2.j]])
>>> a.getfield(np.float64)           # 実数部分を取り出す
array([[1., 1.],
       [1., 1.]])
>>> a.getfield(np.float64, offset=8) # 虚数部分を取り出す
array([[2., 0.],
       [0., 2.]])
この例では、16バイトの複素数型データから、8バイトの実数部分と8バイトの虚数部分とを、それぞれ8バイトの浮動小数点型(np.float64)として取り出した配列を作っています。
なお、複素数型のデータの大きさは下記のようにして調べることができます。
>>> a.dtype.itemsize    # 1要素のバイト数
16
>>> a.dtype
dtype('complex128')
関連項目
関数ndarray.byteswapの使い方の例
関数ndarray.newbyteorderの使い方の例
関数ndarray.setfieldの使い方の例

関数ndarray.compressの使い方の例

関数の機能:選択した位置のスライスを返却

例1 : 2次元の配列を縦方向(axis=0)に選択

>>> a = np.array([[3, 5],
	          [1, 6],
	          [9, 4]])
>>> a.compress([True, False, True], axis=0)
array([[3, 5],
       [9, 4]])
ndarray.compressの説明図(axis=0)

例2 : 2次元の配列を横方向(axis=1)に選択

>>> a.compress([False, True], axis=1)
array([[5],
       [6],
       [4]])
ndarray.compressの説明図(axis=1)
関連項目
関数ndarray.chooseの使い方の例
関数ndarray.takeの使い方の例