[解決済み】空のnumpy配列に新しい行を追加する方法
2022-04-12 14:18:21
質問
Pythonの標準的な配列を使うと、以下のようなことができます。
arr = []
arr.append([1,2,3])
arr.append([4,5,6])
# arr is now [[1,2,3],[4,5,6]]
しかし、numpyでは同じことができません。例えば
arr = np.array([])
arr = np.append(arr, np.array([1,2,3]))
arr = np.append(arr, np.array([4,5,6]))
# arr is now [1,2,3,4,5,6]
も調べてみました。
vstack
を使用すると
vstack
を空の配列に適用すると、次のようになります。
ValueError: all the input array dimensions except for the concatenation axis must match exactly
では、numpyで空の配列に新しい行を追加するにはどうすればよいのでしょうか?
どのように解決するのですか?
必要な配列の開始方法です。
arr = np.empty((0,3), int)
これは空の配列ですが、適切な次元数を持っています。
>>> arr
array([], shape=(0, 3), dtype=int64)
そして、必ず軸0に沿って追加してください。
arr = np.append(arr, np.array([[1,2,3]]), axis=0)
arr = np.append(arr, np.array([[4,5,6]]), axis=0)
でも、@jonrsharpeさんのおっしゃる通りです。 実際、ループの中で加算するのであれば、最初の例のようにリストに加算して、最後にnumpy配列に変換する方がずっと速いでしょう。
In [210]: %%timeit
.....: l = []
.....: for i in xrange(1000):
.....: l.append([3*i+1,3*i+2,3*i+3])
.....: l = np.asarray(l)
.....:
1000 loops, best of 3: 1.18 ms per loop
In [211]: %%timeit
.....: a = np.empty((0,3), int)
.....: for i in xrange(1000):
.....: a = np.append(a, 3*i+np.array([[1,2,3]]), 0)
.....:
100 loops, best of 3: 18.5 ms per loop
In [214]: np.allclose(a, l)
Out[214]: True
numpythonicなやり方はアプリケーションによって異なりますが、以下のような感じでしょうか。
In [220]: timeit n = np.arange(1,3001).reshape(1000,3)
100000 loops, best of 3: 5.93 µs per loop
In [221]: np.allclose(a, n)
Out[221]: True
関連
-
opencvとpillowを用いた顔認証システム(デモあり)
-
Pythonコードの可読性を向上させるツール「pycodestyle」の使い方を詳しく解説します
-
Python 入出力と高次代入の基礎知識
-
[解決済み】TypeError: 系列を <class 'float'> に変換することができません。
-
[解決済み】Python - "ValueError: not enough values to unpack (expected 2, got 1)" の修正方法 [閉店].
-
[解決済み] NumPyの配列を切り詰めずに、完全に表示するにはどうしたらよいですか?
-
[解決済み] Pythonで辞書に新しいキーを追加するにはどうすればよいですか?
-
[解決済み] リストが空かどうかを確認するにはどうすればよいですか?
-
[解決済み] 文字列が空かどうかを確認する方法は?
-
[解決済み] NumPyで、CSVデータをレコード配列に読み込むにはどうしたらいいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Pythonの非常に便利な2つのデコレーターを解説
-
Python jiabaライブラリの使用方法について説明
-
PyQt5はユーザーログインGUIインターフェースとログイン後のジャンプを実装しています。
-
pyCaret効率化乗算器 オープンソース ローコード Python機械学習ツール
-
[解決済み】Pythonでgoogle APIのJSONコードを読み込むとエラーになる件
-
[解決済み】Python Error: "ValueError: need more than 1 value to unpack" (バリューエラー:解凍に1つ以上の値が必要です
-
[解決済み】ImportError: bs4という名前のモジュールがない(BeautifulSoup)
-
[解決済み】NameError: 名前 'self' が定義されていません。
-
[解決済み] NumPyで空の配列/行列を作成する方法は?
-
[解決済み】NumPyの配列を別のNumPyの配列に連結する