Numpyの配列(ndarray)の作成方法を説明します。
ndarrayは多次元配列を扱うためのオブジェクトです。名前は、N次元配列(N-dimensional array)に由来します。
array
array関数を用いて、ndarrayを生成することができます。
array関数によるndarray生成は次の特徴があります。
- pythonのリスト、タプルを引数とする。
- dtypeが未定義の場合、ndarrayの型はarray関数に渡した引数の型から推測されます。
array関数の引数は下記の公式Referenceを参照してください。
NumPy Reference, P491, 4.1.2 From existing dataのarray
import numpy as np l_int = [1, 2, 3] l_float = [1.1, 2.2, 3.3] tp_int = (1, 2, 3) #①:int型リストからndarrayを生成 a_int = np.array(l_int) print(a_int) print(a_int.dtype) """出力 [1 2 3] int64 """ #②:float型リストからndarrayを生成 a_float = np.array(l_float) print(a_float) print(a_float.dtype) """出力 [1.1 2.2 3.3] float64 """ #③:int型タプルからndarrayを生成 a_tpl = np.array(tp_int) print(a_tpl) print(a_tpl.dtype) """出力 [1 2 3] int64 """
【array関数にdtypeを指定】
dtypeに型を引数として渡すことで、ndarrayの型を指定できます。
import numpy as np s = "123" a_int = np.array(list(s), dtype=int) print(a_int) print(a_int.dtype) """出力 [1 2 3] int64 """
array関数にstr型のリストを渡し、dtypeにintを指定することで、int型(int64)のndarrayを生成しています。
dtypeにintを渡した場合、np.int_として扱われます。
np.int_ はpythonのintと互換性のある符号付整数型であり、64bitシステムでは、64bit符号付き整数です(*1)。
(*1)Scalars — NumPy v1.21 Manual
【array関数にリスト、タプルを渡さない場合】
下記の様に、array関数に引数を渡すことはできません。リスト、タプルを渡してください。
import numpy as np l_int = [1, 2, 3] a_int = np.array(1 ,2 ,3) print(a_int) print(a_int.dtype) """出力 TypeError: array() takes from 1 to 2 positional arguments but 3 were given """
zeros
全ての要素が0である、指定されたサイズのndarrayを生成します。
import numpy as np a = np.zeros(5) print(a) """出力 [0. 0. 0. 0. 0.] """ a = np.zeros((2,3)) print(a) """出力 [[0. 0. 0.] [0. 0. 0.]] """
ones
全ての要素が1である、指定されたサイズのndarrayを生成します。
import numpy as np a = np.ones(5) print(a) """出力 [1. 1. 1. 1. 1.] """ a = np.ones((2,3)) print(a) """出力 [[1. 1. 1.] [1. 1. 1.]] """
empty
全ての要素が不定である、指定されたサイズのndarrayを生成します。要素は0ではなく、不定であることに注意してください。
import numpy as np a = np.empty(5) print(a) """出力 [8.57096387e-317 0.00000000e+000 2.95901069e-311 2.38228016e-022 1.19437965e+190] """ a = np.empty((2,3)) print(a) """出力 [[1.02053093e-316 0.00000000e+000 6.91448991e-310] [6.91447933e-310 6.91448103e-310 6.91447933e-310]] [[1. 1. 1.][1. 1. 1.]] """
arrange
python組み込みのrange関数と同様の操作で、ndarrayを生成します。
import numpy as np a = np.arange(5) print(a) """出力 [0 1 2 3 4] """ a = np.arange(2,11, 2) print(a) """出力 [ 2 4 6 8 10] """ a = np.arange(10, -1, -1) print(a) """出力 [10 9 8 7 6 5 4 3 2 1 0] """
参考
python – Difference between np.int, np.int_, int, and np.int_t in cython? – Stack Overflow
NumPyの型についての理解が深まります。
コメント