9

だから私はこれをすると言います

x = np.arange(0, 3)

を与える

array([0, 1, 2])

しかし、私は何が好きですか

x = np.arange(0, 3)*repeat(N=3)times

取得するため

array([0, 1, 2, 0, 1, 2, 0, 1, 2])
4

3 に答える 3

13

に関する最近の質問をいくつか見ましたresize。頻繁に使用されるわけではありませんが、必要なことを行う 1 つのケースを次に示します。

In [66]: np.resize(np.arange(3),3*3)
Out[66]: array([0, 1, 2, 0, 1, 2, 0, 1, 2])

これを行う方法は他にもたくさんあります。

In [67]: np.tile(np.arange(3),3)
Out[67]: array([0, 1, 2, 0, 1, 2, 0, 1, 2])
In [68]: (np.arange(3)+np.zeros((3,1),int)).ravel()
Out[68]: array([0, 1, 2, 0, 1, 2, 0, 1, 2])

np.repeat私たちが望むように繰り返さない

In [70]: np.repeat(np.arange(3),3)
Out[70]: array([0, 0, 0, 1, 1, 1, 2, 2, 2])

しかし、それでも作り直すことができます (これは少し高度です):

In [73]: np.repeat(np.arange(3),3).reshape(3,3,order='F').ravel()
Out[73]: array([0, 1, 2, 0, 1, 2, 0, 1, 2])
于 2016-12-21T03:18:50.517 に答える
4

これはどう?

arr = np.arange(3)
res = np.hstack((arr, ) * 3)

出力

array([0, 1, 2, 0, 1, 2, 0, 1, 2])

私が言うオーバーヘッドはあまりありません。

于 2016-12-21T06:28:25.280 に答える