以下の内容はhttps://pydocument.hatenablog.com/entry/2025/02/16/160652より取得しました。


NumPyの「ones」の使い方 – 「1」で初期化された配列を生成する

NumPyは、Python数値計算を行うためのライブラリです。NumPyを使うと、効率的な数値計算に不可欠な多次元配列を簡単に作成・操作できます。この記事では、NumPyで1で初期化された配列を生成するためのones関数の基本的な使い方、そしてones_like関数との使い分けについて解説します。

onesの基本的な使い方

ones関数は、指定した形状(shape)とデータ型(dtype)を持つ、すべての要素が1で初期化された配列を生成します。

最もシンプルな例

import numpy as np

# 形状が(2, 3)の2次元配列を生成
arr = np.ones((2, 3))
print(arr)

このコードでは、np.ones((2, 3))によって、2行3列の2次元配列が生成され、arr変数に格納されます。ones関数はデフォルトでfloat64型の1を生成します。

出力

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

形状の指定

ones関数の最初の引数には、生成したい配列の形状をタプルで指定します。

# 5つの要素を持つ1次元配列
arr1 = np.ones(5)
print(arr1)

# 3x4x2の3次元配列
arr2 = np.ones((3, 4, 2))
print(arr2)

出力

[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.]]]

データ型の指定

dtype引数で、配列のデータ型を指定できます。デフォルトはfloat64です。

# int型の配列
arr_int = np.ones((2, 2), dtype=int)
print(arr_int)

# complex型の配列
arr_complex = np.ones((2, 2), dtype=complex)
print(arr_complex)

出力

[[1 1]
 [1 1]]
[[1.+0.j 1.+0.j]
 [1.+0.j 1.+0.j]]

メモリレイアウトの指定(order)

order引数を使うと、多次元配列のメモリ上での配置順序を指定できます。 'C'(C言語スタイル)を選ぶと行優先、'F'(Fortranスタイル)を選ぶと列優先になります。デフォルトは'C'です。 通常意識する必要はありませんが、特定の計算ライブラリと連携する際に、パフォーマンスに影響することがあります。

# Fortranスタイルの配列
arr_f = np.ones((2, 3), order='F')

ones_likeの使い方

ones_like関数は、既存の配列と同じ形状とデータ型を持つ、1で初期化された配列を生成します。

# 既存の配列
arr = np.array([[1, 2, 3], [4, 5, 6]])

# arrと同じ形状とデータ型の1で埋められた配列を生成
arr_ones = np.ones_like(arr)
print(arr_ones)

出力

[[1 1 1]
 [1 1 1]]

ones_likeは、既存の配列の形状や型を明示的に指定せずに、それらを引き継いだ新しい配列を作成したい場合に便利です。

onesones_like の使い分け

機能 ones ones_like
新規配列の生成
形状の指定 必要 不要(既存配列から取得)
データ型の指定 可能 不要(既存配列から取得)
  • ones: 配列の形状とデータ型を明示的に指定して、新しい配列を作成する場合
  • ones_like: 既存の配列と同じ形状とデータ型を持つ配列を作成する場合

まとめ

NumPyのonesones_likeは、1で初期化された配列を生成します。onesは形状やデータ型を直接指定するのに対し、ones_likeは既存の配列を基にする点が異なります。これらの関数を使い分けることで、NumPyを使った数値計算を効率的に行えます。

0で初期化された配列を生成するNumpyのzerosについては、下記の記事で解説しています。

pydocument.hatenablog.com




以上の内容はhttps://pydocument.hatenablog.com/entry/2025/02/16/160652より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14