np.c_
出力形状は両方のケースで(1,8)である
In [701]: np.c_[np.array([[1,2,3]]), 0, 0, np.array([[4,5,6]])]
Out[701]: array([[1, 2, 3, 0, 0, 4, 5, 6]])
In [702]: np.concatenate([np.array([[1,2,3]]), [[0]], [[0]], np.array([[4,5,6]])],
axis=1)
Out[702]: array([[1, 2, 3, 0, 0, 4, 5, 6]])
を連結配列を行うための別の方法です。連結は2番目の軸である軸= 1にありました。
c_
は、0
からnp.array([[0]])
への次元を拡張し、2d(1,1)を連結する必要がありました。
np.c_
(およびnp.r_
)は、実際には__getitem__
メソッドを持つクラスオブジェクトです。したがって、[]
構文で動作します。 numpy/lib/index_tricks.py
ソースファイルは参考になります。 row
バージョンで扱う
注:1D(8)配列生成、スライス構文(同じ番号を、しかし1Dに)
In [706]: np.r_[1:4,0,0,4:7]
Out[706]: array([1, 2, 3, 0, 0, 4, 5, 6])
In [708]: np.concatenate((np.arange(4),[0],[0],np.arange(4,7)))
Out[708]: array([0, 1, 2, 3, 0, 0, 4, 5, 6])
In [710]: np.hstack((np.arange(4),0,0,np.arange(4,7)))
Out[710]: array([0, 1, 2, 3, 0, 0, 4, 5, 6])
np.c_
は便利ですが、ではない何かがあなたが必要としています理解する。私はconcatenate
と直接作業できると思っています。これは、入力の次元について明示的に考えるよう強制します。
[[1,2,3]]
は実際には1つのリストを含むリストです。 np.array([[1,2,3]])
は、形状(1,3)を有する2次元アレイである。 np.arange(1,4)
は同じ番号の(3、)配列を生成します。 np.arange(1,4)[None,:]
はそれを(1,3)配列にします。
slice(1,4)
はスライスオブジェクトです。 np.r_
とnp.c_
は、実際にnp.arange
を使用してスライスオブジェクトを配列に変換できます。
In [713]: slice(1,4)
Out[713]: slice(1, 4, None)
In [714]: np.r_[slice(1,4)]
Out[714]: array([1, 2, 3])
In [715]: np.c_[slice(1,4)] # (3,1) array
Out[715]:
array([[1],
[2],
[3]])
In [716]: np.c_[1:4] # equivalent with the : notation
Out[716]:
array([[1],
[2],
[3]])
バック(最高ではないかもしれません)、元の例に取得する:np.c_
については
In [722]: np.c_[[np.r_[1:4]],0,0,[np.r_[4:7]]]
Out[722]: array([[1, 2, 3, 0, 0, 4, 5, 6]])
==========
In [731]: np.c_[np.ones((5,3)),np.random.randn(5,10)].shape
Out[731]: (5, 13)
を両方の第一次元が一致する必要があります。
例では、n_samples
はX
(行)の1番目の桁であり、randn
もその数の行を持つ必要があります。
n_samples, n_features = X.shape
X = np.c_[X, random_state.randn(n_samples, 200 * n_features)]
np.concatenate([(X, randn(n_samples...)], axis=1)
も同様です。やや細身ですが、機能的には同じです。
ありがとうhpaulj、素敵な返信と投票アップ。実際に私の混乱はこのサンプルから来ています。この行の 'X = np.c_ [X、random_state.randn(n_samples、200 * n_features)] 'を参照してください。実際にはXの形状は150 * 4ですが、' random_state.randn'私はXと連結するために、150 * some_number_of_columnsの形状が必要だと思う? http://scikit-learn.org/stable/auto_examples/model_selection/plot_roc.html#multiclass-settings –
右の 'n_samples'は' X'の第1次元なので、正しい次元でマッチします。 'X'と' randn'の列の数は異なるかもしれません。 – hpaulj
ありがとうhpaulj、私はXが150 * 4の形だと思います、 'random_state.randn(n_samples、200 * n_features)'が150 * 4の形を出力できたのでしょうか?私は 'n_samples'が150であることを知っていますが、4つの部分はどこから来ましたか? –