前提・実現したいこと
pythonのnumpyのndarrayの最後の要素の取得なのですが,行数が2以上の時は[-1]で最後の行を取得できるのですが、行数が1の時は[-1]で最後の要素しか取得できません。今、下に示すソースコードでaとbでどちらも[x,y,z]の形で取り出したいのですが、なにか良い方法はないでしょうか?
発生している問題・エラーメッセージ
該当のソースコード
python
1import numpy as np 2a=np.array([[1,2,3],[4,5,6]]) 3b=np.array([7,8,9]) 4print(anyfunction(a))#[4,5,6]とでてほしい 5print(anyfunction(b))#[7,8,9]とでてほしい 6 7""" 8print(a[-1])->[4,5,6] 9print(b[-1])->9 10""" 11
試したこと
anyfunctionの中身を配列の大きさに着目してifで判断という手法を現在はとっています
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
b=np.array([[7,8,9]])はダメということでしょうか?
説明不足ですいません。namnium1125さんのおっしゃる通り、bをそのようにしたら[7,8,9]を返すのですが、その代わりaが[[1,2,3],[4,5,6]]になってしまうのです。aもbも入れたときにどちらも[x,y,z]の形で返すようなスマートなanyfunctionはないかということです。
『その代わりaが[[1,2,3],[4,5,6]]になってしまうのです。』???現時点でその形式では?
紛らわしい質問文で申し訳ありませんでした。ndimで次元数が取得できるのですね。今まではshapeやsizeで何とかしようとしていたのですが、私の本来のコードではaの行数が増えていくので途中でエラーを吐く可能性があり悩んでいました。解決できそうです。ありがとうございました。
回答2件
あなたの回答
tips
プレビュー