2016-09-22 13 views
1

numpyの配列に1つの要素を挿入する方法を教えてください。 insertとaxisパラメータを使って列や行全体を挿入する方法を知っています。しかし、どのように挿入/拡大するのですか?例えば、私は、配列を有する行列に1つの項目を挿入する

を言う:

1 1 1 
1 1 1 
1 1 1 

Iは、(同じ行に)0を挿入するに言う(1、1)位置、言う方法:

1 1 1 
1 0 1 1 
1 1 1 

これは実践ですか?もしそうなら、あなたは(同じ列に)反対をしますか、どのように言う:

1 1 1 
1 0 1 
1 1 1 
    1 
+2

作成したいものは、私には行列のように見えません。 –

+0

私はあなたがその配列を言うことができると思います。 – user1179317

+1

あなたは何をしていますか?あなたの全体的な目的は何ですか?確かに、あなたの目標は、そのような面倒なデータ構造によって助けられないか、それとも、NumPyは仕事のための正しいツールではありません。 (しかし、私は驚いて喜んでいます。) –

答えて

3

Numpyはのように見えます。はぼんやりした配列のようですが、それらはオブジェクトの配列であり、おそらくあなたが望むものではありません。次の違いに注意してください。

In [27]: np.array([[1, 2], [3]]) 
Out[27]: array([[1, 2], [3]], dtype=object) 

In [28]: np.array([[1, 2], [3, 4]]) 
Out[28]: 
array([[1, 2], 
     [3, 4]]) 

あなたが行/列i/jvを挿入したい場合は、あなたが他の行をパディングして行うことができます。列、行に沿っていないパッドに

In [29]: a = np.array([[1, 1, 1], [1, 1, 1], [1, 1, 1]]) 

In [30]: i, j, v = 1, 1, 3 

In [31]: np.array([np.append(a[i_], [0]) if i_ != i else np.insert(a[i_], j, v) for i_ in range(a.shape[1])]) 
Out[31]: 
array([[1, 1, 1, 0], 
     [1, 3, 1, 1], 
     [1, 1, 1, 0]]) 

、最初に再び転置そして、この操作を実行、その後、aをトランスポーズ:これが行うのは簡単です。

-1

私はあなたがここでは通常のPythonアレイのappend()(numpyのない) を使うべきだと思うが

A = [[1,1,1], 
    [1,1,1], 
    [1,1,1]] 
A[1].append(1) 
短い例です

結果は、値が行によって格納されているので、一つの要素と

[[1, 1, 1], 
[1, 1, 1, 1], 
[1, 1, 1]] # like in your example 

カラム拡張は、不可能です。技術的には、A.append([None,1,None])のようなことができますが、これは悪い習慣です。

関連する問題