虽然我已经看到了这个问题的一些答案,但我想知道是否有更好的方法来解决这个问题。
例如,
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但我的问题是,有没有更好的方法来做到这一点?
答案 0 :(得分:1)
对于np.ones
和np.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]])
然而,语法更难以阅读/理解,并且不承诺额外的性能。你可以坚持像你所示的那样在数组中添加一个新的轴。