numpy排名1数组

9
我是Matlab/Octave用户。Numpy文档称,与矩阵(matrix)相比,使用array更加可取。是否有一种方便的方法来处理秩为1的数组,而不需要经常重塑它?
例如:
data = np.loadtxt("ex1data1.txt", usecols=(0,1), delimiter=',',dtype=None)
X = data[:, 0]
y = data[:, 1]
m = len(y)

print X.shape, y.shape
>>> (97L, ) (97L, )

我无法使用concatenatevstackappend等方法向X添加新列,除了效率较慢的np.c_方法外,不需要重新整形X:

X = np.concatenate((np.ones((m, 1)), X), axis = 1)
>>> ValueError: all the input arrays must have same number of dimensions

X - y的计算需要重新整理y的形状:np.reshape(y, (-1, 1))


这个问题是关于连接还是关于一维数组的一般性问题? - MSeifert
我一般会考虑排名第一的数组。 - NeuroMonk
我经常使用像np.arange(10).reshape(2,5)这样的表达式。 - hpaulj
1个回答

10

y[:, np.newaxis]是一个比np.reshape(y, (-1, 1))更简单的等价方法。因为np.newaxisNone的别名,所以y[:, None]也可以使用。还值得一提的是np.expand_dims(y, axis=1)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接