numpy数组,第二个维度为空

时间:2017-08-13 17:01:58

标签: python arrays numpy

虽然我已经看到了这个问题的一些答案,但我想知道是否有更好的方法来解决这个问题。

例如,

N = 15
A = np.repeat(1/N, N)

如果我这样做,结果将具有形状(15,)

如果我希望形状为(15,1),我想我可以做到

A = np.repeat(1/N, N)[:,np.newaxis] 

我也有同样的问题

np.ones(N); np.zeros(N)

我可以通过使用" np.newaxis"

将第二个维度设为1

但我的问题是,有没有更好的方法来做到这一点?

1 个答案:

答案 0 :(得分:1)

对于np.onesnp.zeros,您可以传递一个指定输出数组形状的元组:

np.ones((N, 1)); np.zeros((N, 1)) 

对于np.repeat,您可能需要传递一个已经有两个维度的数组(或列表),然后沿所需的轴重复:

>>> np.repeat([[1./N]], N, axis=0)
array([[ 0.06666667],
       [ 0.06666667],
       [ 0.06666667],
       [ 0.06666667],
       [ 0.06666667],
       [ 0.06666667],
       [ 0.06666667],
       [ 0.06666667],
       [ 0.06666667],
       [ 0.06666667],
       [ 0.06666667],
       [ 0.06666667],
       [ 0.06666667],
       [ 0.06666667],
       [ 0.06666667]])

然而,语法更难以阅读/理解,并且不承诺额外的性能。你可以坚持像你所示的那样在数组中添加一个新的轴。