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=bool | True | 条件判定用 |
例:ブール型(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個の1 | np.ones(5) |
3行2列の1 | np.ones((3, 2)) |
整数の1 | np.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()
で既存配列と同じ形を作れる- 機械学習やデータ分析でよく使う
コメント