入力として受け取る配列の設定方法に応じて、異なる応答をする関数があります。機能しない方法では、関数は引き続き実行されますが、正しくはありません
働く方法:
import numpy as np
array1 = ["something1", "a,b,c,9", "more", "b,c,4"]
array2 = ["something2", "4,3", "more", "1,a"]
array3 = ["something3", "z", "more", "9,1"]
array4 = ["something4", "1", "more", "z"]
real_array = np.array((array1,array2,array3,array4))
うまくいかない方法:
import numpy as np
array = [["something1", "a,b,c,9", "more", "b,c,4"],["something2", "4,3", "more", "1,a"],["something3", "z", "more", "9,1"],["something4", "1", "more", "z"]]
real_array = np.array((array))
同様の機能しない方法:
import numpy as np
import csv
array = []
reading = csv.reader(open('file.csv', 'rb'))
for row in reading:
array.append(row)
real_array = np.array((array))
array
行を追加することができ、他の方法は手動で行う必要があるため、明らかに機能しない方法の方がデータを処理する方が簡単です。
両方の配列は同じです...では、なぜ私の関数はそれらに異なって応答するのですか?
私の関数は、ファイルから行をランダムに選択し、2 番目の列の何かが前の選択の最後の列の何かと一致するかどうかを確認します。ここにあります:
def make_sequence(size,array):
count = 0
without_column = array[1::]
np.random.shuffle(without_column)
sequence = [without_column[0]]
result = [without_column[0][0]]
length = 0
while length < size:
np.random.shuffle(without_column)
start = without_column[0][1].split(',')
end = sequence[count][3].split(',')
i = 0
while i < len(start):
if start[i] in end:
sequence.append(without_column[0])
result.append(without_column[0][0])
count += 1
i = len(start)
else:
pass
i += 1
length = len(result)
return result
編集2:どうなるか
このコードを実行すると:
make_sequence(10,real_array)
毎回異なる、1 列目のみで構成される配列を返したいのですが、2 番目のアイテムの開始位置が 1 番目の終了位置の 1 つである場合にのみ、アイテムを隣り合わせに配置します。次に例を示します。
選択された最初の項目が array3 の場合、次の項目は array1 または array4 のみであり、他はありません。これは、配列 3 の列 4 が 9,1 であるためです。これは、その後に続く唯一の配列の 2 列目に 9 または 1 が必要であることを意味します。
したがって、ランダムに選択された最初の項目が array3 の場合、次のコードを実行すると:
make_sequence(2,real_array)
次の出力の可能性しかありません。
[「何か3」、「何か4」]
[「何か3」、「何か1」]