2017-08-25 9 views
0

内のすべての要素に値を追加すると、かなり初歩的な質問があります。私のpython(/プログラミング)に新たなんだデータフレーム

を、私はそれが最も効率的だ場合には、データ構造(基本的には、データフレームが、不明な点を取りたいです次のように数値を持っている構造):

 0  1  2  3  4  5 
0 0.0 1.0 7.0 22.0 14.0 28.0 
1 0.0 99.0 15.0 99.0 99.0 99.0 
2 1.0 0.0 21.0 18.0 21.0 14.0 
3 2.0 6.0 20.0 38.0 8.0 21.0 
4 2.0 6.0 20.0 39.0 8.0 16.0 
5 2.0 9.0 99.0 39.0 8.0 16.0 
6 2.0 9.0 99.0 39.0 8.0 21.0 
7 2.0 9.0 99.0 99.0 8.0 16.0 

私は値を追加する(例えば、1)時に各セル、他の人を維持しながら、すなわち定数が

1.0 1.0 7.0 22.0 14.0 28.0 
0.0 2.0 7.0 22.0 14.0 28.0 
0.0 1.0 8.0 22.0 14.0 28.0 
0.0 1.0 7.0 23.0 14.0 28.0 
0.0 1.0 7.0 22.0 15.0 28.0 
0.0 1.0 7.0 22.0 14.0 29.0 
に最初の行を変更します

私は順番に各行のためにそれを行い、おそらくリストへの変更のコレクションを保存します。

前述のように、私はこれでかなり新しく、要素を一度に変更することができました。または、それらを順番に変更することができましたが、以前の変更はそのまま残ります。

options=[] 
import numpy as np 
f = np.array(Data) 
for i in xrange(8): 
    for j in xrange(6): 
    f[i,j] +=1 
    options.append(f) 

PythonまたはRの任意のソリューションが歓迎です!

+1

ようこそ!あなたは "Pythonで何かのソリューションを書くか、Rを歓迎!_"と書くと、あなたの質問は非常に広がります。可能なRソリューションを喜んで提供することはできますが、問題ごとに1つのプログラミング言語でプログラミング固有の質問に集中しようとする必要があります。あなたの場合、pythonが最優先事項のようです。これについては、[別のプログラミング言語について個別の質問をしますか?](https://meta.stackoverflow.com/questions/272888/do-i-make-separate-questions)を参照してください。 -for-separate-programming-languages)である。乾杯。 – Henrik

答えて

0

私はnumpyで経験はありませんが、あなたは次のことができるはずです。

class matrix(object): 
    def __init__(self, size, values): 
     self.width = size[0] 
     self.heigth = size[1] 
     self.size = size 
     if len(values) != self.heigth*self.width: 
      raise ValueError("values don't match dimensions") 
     else: 
      self.data = [] 
      for y in range(len(values)): 
       if y%self.width == 0: 
        self.data.append([]) 
       self.data[y//self.width].append(values[y]) 
    def addfloat(self, value): 
     output = self.data 
     for y in output: 
      for x in y: 
       output.append(x + value) 
     return matrix(self.size, output) 

basicly私は、フロートが追加んそれのための関数を記述し、その後、「マトリックス」クラスを作成します。 例。以前の変更を保持避けるため

matrix((2, 2), (1, 2, 2, 1)).addfloat(1.2).data 

戻り

[[2.2, 3.2], [3.2, 2.2]] 
0

、あなたはそれを修正するか、リストに追加する前に、配列のコピーを作成することができ、のようなもの:

import numpy as np 

options = [] 
f = np.array(Data) 
for i in xrange(8): 
    for j in xrange(6): 
     ar2 = f.copy() 
     ar2[i, j] += 1 
     options.append(ar2) 

それしかし、配列全体を明示的にループすることを避ける方が良い場合もあります。

あなたはあなたが使用したいものに類似したインデックスを使用して所望の2- D numpyの配列を抽出することができ、そこから3次元numpyの配列を返すでしょう
options = (np.identity(f.size)+f.flatten()).reshape((f.size,)+f.shape) 

:あなたのnumpyの配列fについては、これはのようになります。あなたの現在のリスト。

最初のコードブロックにあるように、Dataパンダのデータフレームがありますか?その場合は、values属性のData.valuesを使用して配列を取得し、明示的に配列を作成する必要はありません。

関連する問題