如何检查数组是否为2D

Ten*_*gis 10 python numpy

我从文件中读取与loadtxt这样的

data = loadtxt(filename) # id x1 y1 x2 y2
Run Code Online (Sandbox Code Playgroud)

data 看起来像

array([[   4.      ,  104.442848, -130.422137,  104.442848,  130.422137],
   [   5.      ,    1.      ,    2.      ,    3.      ,    4.      ]])
Run Code Online (Sandbox Code Playgroud)

然后我可以减少data属于某个id数字的行:

d = data [ data[:,0] == id] 
Run Code Online (Sandbox Code Playgroud)

这里的问题是数据只包含一行.

所以我的问题是如何检查我的数组的二维性data

我试过检查

data.shape[0]  # num of lines
Run Code Online (Sandbox Code Playgroud)

但对于单行我会得到类似的东西(n, ),所以这不会奏效.

任何想法如何正确地做到这一点?

unu*_*tbu 13

data.ndim给出了数组的维度(numpy调用的数量axes).


正如您已经观察到的,当数据文件只有一行时,np.loadtxt 返回一维数组.当数据文件有多行时,np.loadtxt 返回一个二维数组.

确保data2D 的最简单方法是传递ndmin=2loadtxt:

data = np.loadtxt(filename, ndmin=2)
Run Code Online (Sandbox Code Playgroud)

ndmin参数是在NumPy 1.6.0版中添加的.对于旧版本,您可以使用np.atleast_2d:

data = np.atleast_2d(np.loadtxt(filename))
Run Code Online (Sandbox Code Playgroud)