【NumPy】全ての要素が1の配列を作成する方法(np.ones、np.ones_like)[Python]

  • URLをコピーしました!
目次

NumPy

前回、subprocessモジュールを使ってPythonからターミナルやコマンドプロンプトを操作する方法を紹介しました。

今回はPythonのNumPyで全ての要素が1の配列を作成する方法を紹介します。

実は前に「全ての要素が0の配列を作成する方法」として、「np.zeros()」「np.zeros_like()」という関数を紹介しました。

今回はそれの要素が1のバージョンです。

それでは始めていきましょう。

np.ones():全ての要素が1の配列を作成

全ての要素が1の配列を作成するには「np.ones()」を用います。

引数として数値を与えるとその数だけ要素として1をもつ配列を作成します。

import numpy as np

test1 = np.ones(5)

print(test1)

実行結果
[1. 1. 1. 1. 1.]

引数をタプルで複数の数値を与えると二次元配列、三次元配列として全ての要素を1としてもつ配列を作成できます。

import numpy as np

test2 = np.ones((5, 3))

print(test2)

実行結果
[[1. 1. 1.]
 [1. 1. 1.]
 [1. 1. 1.]
 [1. 1. 1.]
 [1. 1. 1.]]
import numpy as np

test3 = np.ones((5, 3, 4))

print(test3)

実行結果
[[[1. 1. 1. 1.]
  [1. 1. 1. 1.]
  [1. 1. 1. 1.]]

 [[1. 1. 1. 1.]
  [1. 1. 1. 1.]
  [1. 1. 1. 1.]]

 [[1. 1. 1. 1.]
  [1. 1. 1. 1.]
  [1. 1. 1. 1.]]

 [[1. 1. 1. 1.]
  [1. 1. 1. 1.]
  [1. 1. 1. 1.]]

 [[1. 1. 1. 1.]
  [1. 1. 1. 1.]
  [1. 1. 1. 1.]]]

「np.zeros()」と同様に二次元配列、三次元配列などを作成する際、タプルで値を与えず、そのまま引数として与えてしまうとエラーとなります。

import numpy as np

test4 = np.ones(5, 3)

print(test4)

実行結果
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
Cell In[4], line 3
      1 import numpy as np
----> 3 test4 = np.ones(5, 3)
      5 print(test4)

File /Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/numpy/core/numeric.py:191, in ones(shape, dtype, order, like)
    188 if like is not None:
    189     return _ones_with_like(like, shape, dtype=dtype, order=order)
--> 191 a = empty(shape, dtype, order)
    192 multiarray.copyto(a, 1, casting='unsafe')
    193 return a

TypeError: Cannot interpret '3' as a data type

np.ones_like():既存の配列と同じ構造で要素が1の配列を作成

次に既にある配列と同じ構造で要素が1の配列を作成する方法を紹介します。

その場合は「np.ones_like(配列)」を用います。

前に紹介した「np.random.rand()」を用いて、ランダムな要素をもつ配列を作成した後、その配列と同じ構造で要素が1の配列を作成してみます。

import numpy as np

test5 = np.random.rand(5, 3)

test6 = np.ones_like(test5)

print(test5)
print(test6)

実行結果
[[0.74090614 0.72736735 0.48055415]
 [0.58298606 0.58193389 0.88854095]
 [0.60068622 0.31540923 0.63189884]
 [0.38554233 0.56482393 0.94900833]
 [0.05408992 0.89743998 0.22695272]]
[[1. 1. 1.]
 [1. 1. 1.]
 [1. 1. 1.]
 [1. 1. 1.]
 [1. 1. 1.]]

次回は逆フーリエ変換をして不要な周波数成分を除去する方法(ローパスフィルタ、ハイパスフィルタ、バンドパスフィルタ)を紹介します。

ではでは今回はこんな感じで。

よかったらシェアしてね!
  • URLをコピーしました!

コメント

コメントする

目次