NumPyで配列を作成する方法!

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の型についての理解が深まります。

コメント

タイトルとURLをコピーしました