add_to_file 関数でファイルを作成し、別のプログラムがそのファイルを入力として受け取るプログラムを作成しています。
ファイルには、名前、開始位置、説明、終了位置の 4 つの列があります。
プログラムが行うべきことは、ファイルを numpy 配列に読み込み、モーションの終了位置の少なくとも 1 つが少なくとも 1 つと同じになる配列を本質的に作成することによって、もっともらしい「モーション シーケンス」を作成することです。続くモーションの開始位置の
def make_sequence(size,array):
count = 0
sequence = [array[0]]
result = [array[0,0]]
for row in array[1:size]:
if row[1] == sequence[count][3]:
sequence.append(row)
result.append(row[0])
count += 1
else:
pass
return result
これが何をしているのか、ファイルから作成された配列を取得し、新しい配列 (結果) を作成して、新しい配列が動きの名前だけになるようにしますが、開始位置が正確であるため、隣り合った動きのみが流れます。前のモーションの終了位置と同じ!これが私の問題です:
いくつかの動きは、さまざまな位置で開始および終了できます。私が書いたものは、モーションごとに 1 つの開始位置と 1 つの終了位置しか取ることができません。
質問:位置の値の文字列がカンマで区切られた値、つまり (a、b、c、d) の場合、関数が流れるすべてのモーションを返しますか?
編集:
これは、コードで実行できるようにしたいことの例です
入力:
row_1 = ["Name1", "1,3,4,5", "Description", "2"]
row_2 = ["Name2", "5,3", "Description", "4"]
row_3 = ["Name3", "2", "Description", "1"]
row_4 = ["Name4", "1", "Description", "7,3"]
row_5 = ["Name5", "3", "Description", "5,9,4"]
row_6 = ["Name6", "2", "Description", "7"]
row_7 = ["Name7", "7", "Description", "2"]
row_8 = ["Name8", "1", "Description", "4"]
row_9 = ["Name9", "4", "Description", "2"]
data = np.array((column_index,row_1,row_2,row_3,row_4,row_5,row_6,row_7,row_8,row_9))
print make_sequence(7,array)
出力:
[Name1,Name3,Name4,Name5]
この出力は、名前が「Name1」のrow_1で自動的に開始されるため、次の行が読み取られ、その行の開始位置が、前の行に追加された終了位置と同じである場合に得られます。正しい順序で、その名前が結果配列に追加されます。
入力のサイズが 7 だったので、これは最初の 7 行に対してのみ行われます。