【初心者向け】NumPyのones関数の使い方まとめ

python

Pythonでデータ分析や機械学習をするとき、すべて1で埋まった配列が必要になることがあります。

そんなときに便利なのが、NumPyのnp.ones()関数です。

np.ones()でできること

  • すべて1の配列を簡単に作れる
  • 1次元でも2次元でも3次元でも対応
  • データ型も自由に指定できる

この記事では、np.ones()の基本的な使い方から実際の活用例まで詳しく説明します。

スポンサーリンク

基本的な使い方

まずはNumPyをインポート

説明 NumPyを使うときは、最初にインポートが必要です。

基本の書き方

import numpy as np

一番シンプルな使い方

説明 np.ones()の基本的な書き方です。

基本の書き方

np.ones(サイズ)

例1:5個の1を作る

import numpy as np

result = np.ones(5)
print(result)

実行結果

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

例2:3個の1を作る

result = np.ones(3)
print(result)

実行結果

[1. 1. 1.]

2次元配列(表のような形)

行と列を指定して作る

説明 縦と横のサイズを指定して、表のような形の配列を作ります。

基本の書き方

np.ones((行数, 列数))

例1:3行2列の配列

result = np.ones((3, 2))
print(result)

実行結果

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

例2:2行4列の配列

result = np.ones((2, 4))
print(result)

実行結果

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

データ型を指定する

整数の1を作る

説明 普通のnp.ones()は小数点付きの1を作りますが、整数の1も作れます。

例:整数型で作る

result = np.ones((2, 3), dtype=int)
print(result)

実行結果

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

いろいろなデータ型

説明 dtypeで指定できる主なデータ型です。

指定方法作られる数値用途
dtype=int整数の1計算用
dtype=float小数の1.0一般的
dtype=boolTrue条件判定用

例:ブール型(TrueとFalse)

result = np.ones((2, 2), dtype=bool)
print(result)

実行結果

[[ True  True]
 [ True  True]]

便利な応用テクニック

1以外の数で埋める

説明 np.ones()で作った配列に数をかけると、その数で埋まった配列になります。

例1:すべて5の配列

result = np.ones((2, 3)) * 5
print(result)

実行結果

[[5. 5. 5.]
 [5. 5. 5.]]

例2:すべて-1の配列

result = np.ones((3, 2)) * -1
print(result)

実行結果

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

既存の配列と同じ形で作る:ones_like()

説明 すでにある配列と同じサイズ・同じ型の配列を作りたいときに便利です。

# 元になる配列
original = np.array([[1, 2, 3], 
                     [4, 5, 6]])
print("元の配列:")
print(original)

# 同じ形でones配列を作る
result = np.ones_like(original)
print("ones配列:")
print(result)

実行結果

元の配列:
[[1 2 3]
 [4 5 6]]
ones配列:
[[1 1 1]
 [1 1 1]]

3次元配列も作れる

説明 NumPyでは3次元(立体的な)配列も作れます。

例:2×3×4の3次元配列

result = np.ones((2, 3, 4))
print("形:", result.shape)
print("配列:")
print(result)

実行結果

形: (2, 3, 4)
配列:
[[[1. 1. 1. 1.]
  [1. 1. 1. 1.]
  [1. 1. 1. 1.]]

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

よくある間違いと注意点

カッコの付け方に注意

間違いやすいポイント 2次元配列を作るときのカッコの付け方です。

正しい例

# これはOK
np.ones((3, 2))  # カッコが2重

# これもOK  
np.ones([3, 2])  # リストでも可能

間違った例

# これはエラーになる
np.ones(3, 2)  # カッコが足りない

デフォルトは小数

注意点 何も指定しないと、小数点付きの数になります。

result = np.ones(3)
print(result)
print("データ型:", result.dtype)

実行結果

[1. 1. 1.]
データ型: float64

整数が欲しいときはdtype=intを忘れずに!

PythonのリストとNumPy配列の違い

Pythonのリスト

python_list = [1] * 5
print(python_list)
print("型:", type(python_list))

実行結果

[1, 1, 1, 1, 1]
型: <class 'list'>

NumPy配列

numpy_array = np.ones(5, dtype=int)
print(numpy_array)
print("型:", type(numpy_array))

実行結果

[1 1 1 1 1]
型: <class 'numpy.ndarray'>

違い

  • NumPy配列は計算が速い
  • NumPy配列は機械学習やデータ分析に必要

実際に使える例

機械学習での重みの初期化

説明 ニューラルネットワークの重みを1で初期化するとき

# 3つの入力、5つの出力のレイヤー
weights = np.ones((3, 5)) * 0.1  # 小さな値で初期化
print(weights)

画像処理でのマスク作成

説明 画像の一部分だけを処理したいときのマスク

# 100x100の画像用マスク
mask = np.ones((100, 100), dtype=bool)
print("マスクのサイズ:", mask.shape)
print("すべてTrue:", np.all(mask))

データ分析での基準値設定

説明 データを正規化するときの基準値として

# データの各要素を1で初期化
baseline = np.ones(10)
data = np.array([1.2, 0.8, 1.5, 0.9, 1.1, 1.3, 0.7, 1.4, 1.0, 0.6])
ratio = data / baseline  # 基準値との比率
print("比率:", ratio)

他の初期化関数との使い分け

関数作られる値いつ使う?
np.ones()すべて1係数の初期化、マスク作成
np.zeros()すべて0データの初期化
np.empty()ランダム後で値を入れる予定
np.full()指定した値任意の値で埋めたい

使い分けの例

# 計算用の初期値として
ones_array = np.ones((3, 3))

# データ保存用の空配列として  
zeros_array = np.zeros((3, 3))

# 特定の値で埋めたい
full_array = np.full((3, 3), 7)

print("ones配列:")
print(ones_array)
print("zeros配列:")
print(zeros_array)
print("full配列:")
print(full_array)

まとめ

よく使うパターン

やりたいことコマンド
5個の1np.ones(5)
3行2列の1np.ones((3, 2))
整数の1np.ones((2, 3), dtype=int)
すべて5の配列np.ones((2, 2)) * 5
他配列と同じ形np.ones_like(array)

覚えておくべきポイント

基本

  • np.ones(サイズ)で1の配列を作れる
  • 2次元はnp.ones((行, 列))とカッコを2重にする
  • dtype=intで整数、何もしないと小数

応用

  • 数をかけて任意の値の配列にできる
  • np.ones_like()で既存配列と同じ形を作れる
  • 機械学習やデータ分析でよく使う

コメント

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