14

Matlab/Octave のバックグラウンドから来て、numpy を学ぼうとしています。私を何度もつまずかせてきたのは、ベクトルと多次元配列の違いです。この質問については、私が抱えている特定の問題を説明しますが、誰かが numpy の 1 次元配列の背後にあるより一般的な図、そもそもなぜそれらが必要なのか、どのように説明できるかを説明していただければ幸いです。一次元配列と多次元配列などを混在させるときのトラブルを避けるために。とにかく、質問:

X という 2 次元配列があります。

X = numpy.arange(10).reshape(2,5)

そして、X の最後の列を取り、それを Y という別の 2 次元配列 (つまり、列ベクトル) として格納したいと考えています。

Y = numpy.atleast_2d(X[:,4]).T

しかし、私はいくつかの理由でそれが好きではありません:

  1. X[:,4] で向きを暗示する必要がある場合、ベクトルを転置するように指示する必要はないと思います。

  2. atleast_2D を使用することは、このような状況が頻繁に発生するコードで何度も使用するのが非常に面倒に思えます。何か間違ったことをしているような気がします。

要するに、より良い方法はありますか?

ありがとう。

4

2 に答える 2

0

サブセット化

さらに簡単な方法は、行列をサブセット化することです。

>>> X
[[0 1 2 3 4]
 [5 6 7 8 9]]

>>> X[:, [4]]
[[4]
 [9]]

>>> X[:, 4]
[4 9]

Pandas のデータフレームと同じように機能します。データフレームにインデックスを付けると、Seriesが得られます。データフレームをサブセット化またはスライスすると、 dataframe が得られます

こちらもご覧ください

于 2021-11-06T04:38:43.600 に答える