13

loadtxtこのようなファイルから読み取ります

data = loadtxt(filename) # id x1 y1 x2 y2

dataのように見えるかもしれません

array([[   4.      ,  104.442848, -130.422137,  104.442848,  130.422137],
   [   5.      ,    1.      ,    2.      ,    3.      ,    4.      ]])

次に、ある番号dataに属する行に減らすことができます。id

d = data [ data[:,0] == id] 

ここでの問題は、データに 1 行しか含まれていない場合です。

だから私の質問は、私の配列の2次元性をチェックする方法dataですか?

チェックしてみた

data.shape[0]  # num of lines

しかし、ワンライナーの場合は のようなものが得られる(n, )ため、これは機能しません。

これを正しく行う方法はありますか?

4

3 に答える 3

16

data.ndimは、配列の次元 (numpy が の数と呼ぶものaxes) を提供します。


すでに見てきたように、データ ファイルに 1 行しかない場合、np.loadtxt は 1D 配列を返します。データ ファイルに複数の行がある場合np.loadtxt 、2D 配列を返します。

data2D であることを確認する最も簡単な方法は、次のように渡すndmin=2ことloadtxtです。

data = np.loadtxt(filename, ndmin=2)

ndminパラメータは NumPy バージョン 1.6.0 で追加されました。古いバージョンでは、np.atleast_2dを使用できます:

data = np.atleast_2d(np.loadtxt(filename))

于 2012-11-24T19:16:29.280 に答える
0

もう1つの方法:

array.shape を探します。

(2,) のようになる場合は、最初は数字を意味しますが、コンマの後には何もないことを意味し、その 1D です。それ以外の場合 (2,10) はコンマ付きの 2 桁を意味し、その 2D です。同様にカンマで何桁まで使えるか、その数の次元配列です。

シンプルな「array.shape」がそれを知るのに役立ちます。

于 2020-07-01T06:03:37.760 に答える