質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
NumPy

NumPyはPythonのプログラミング言語の科学的と数学的なコンピューティングに関する拡張モジュールです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

2回答

1833閲覧

numpyで複数のデータに列を追加、削除したいです

universegift77

総合スコア12

NumPy

NumPyはPythonのプログラミング言語の科学的と数学的なコンピューティングに関する拡張モジュールです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/05/11 11:48

データを全て左にシフトさせたいです。そして、シフトさせた分だけ0で埋めたいです。
↓こんな感じで一個ずつシフトするコードは書けたのですが、これだとfor i in a:で回して一つずつ処理しないといけないので遅いし、もっとnumpyらしい速い書き方があるはずです。
10個全部を一度に処理する書き方を教えてください。

a=np.arange(0,160).reshape((10,4,4))
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11],
[12, 13, 14, 15]])

after=np.delete(a[0],obj=slice(0,1),axis=1)
after=np.append(after,np.zeros(4).reshape(4,1),axis=1)
array([[ 1., 2., 3., 0.],
[ 5., 6., 7., 0.],
[ 9., 10., 11., 0.],
[13., 14., 15., 0.]])

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

np.roll()を使うよりも、元配列の一番最後にだけ0をつけてから全体をずらしたほうが速いと思います。

python

1a = np.arange(0,160).reshape((10,4,4)) 2 3result = np.r_[a.ravel()[1::], 0].reshape(a.shape) 4result[:, :, -1] = 0

投稿2021/05/11 15:27

kirara0048

総合スコア1399

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

0

ベストアンサー

np.rollを使ってください。

python

1import numpy as np 2a = np.arange(0,160).reshape((10,4,4)) 3result = np.roll(a, shift=-1, axis=2) 4result[:,:,-1] = 0 5print(result) 6""" 7array([[[ 1, 2, 3, 0], 8 [ 5, 6, 7, 0], 9 [ 9, 10, 11, 0], 10 [ 13, 14, 15, 0]], 11 12 [[ 17, 18, 19, 0], 13 [ 21, 22, 23, 0], 14 [ 25, 26, 27, 0], 15 [ 29, 30, 31, 0]], 16 17 [[ 33, 34, 35, 0], 18 [ 37, 38, 39, 0], 19 [ 41, 42, 43, 0], 20 [ 45, 46, 47, 0]], 21 22 [[ 49, 50, 51, 0], 23 [ 53, 54, 55, 0], 24 [ 57, 58, 59, 0], 25 [ 61, 62, 63, 0]], 26 27 [[ 65, 66, 67, 0], 28 [ 69, 70, 71, 0], 29 [ 73, 74, 75, 0], 30 [ 77, 78, 79, 0]], 31 32 [[ 81, 82, 83, 0], 33 [ 85, 86, 87, 0], 34 [ 89, 90, 91, 0], 35 [ 93, 94, 95, 0]], 36 37 [[ 97, 98, 99, 0], 38 [101, 102, 103, 0], 39 [105, 106, 107, 0], 40 [109, 110, 111, 0]], 41 42 [[113, 114, 115, 0], 43 [117, 118, 119, 0], 44 [121, 122, 123, 0], 45 [125, 126, 127, 0]], 46 47 [[129, 130, 131, 0], 48 [133, 134, 135, 0], 49 [137, 138, 139, 0], 50 [141, 142, 143, 0]], 51 52 [[145, 146, 147, 0], 53 [149, 150, 151, 0], 54 [153, 154, 155, 0], 55 [157, 158, 159, 0]]]) 56"""

numpy.roll — NumPy v1.20 Manual

投稿2021/05/11 11:55

hayataka2049

総合スコア30935

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問