2017-11-27 26 views
0

私は要素がテキストファイルから読み込まれた2次元配列を持っています。任意の数の要素の場合、シャープ記号(#)はtwod_array[n][0]にあります。ポンド記号で始まらない第2次元の配列ごとに、計算を実行したいと思います。誰でも助けてくれますか?私はnumpy.splitを使ってみましたが、私の構文が間違っていると思います。ここでは、配列の大まかな形式は次のとおりです。値に基づいて配列の行を選択する

twod_array = [ 
    ['#', author], ['#', <more strings>], [23, 345000, 234, 345], 
    [<more numbers>], [<more numbers>] 
    ['#', <more strings>], [<more numbers>], [<more numbers>] 
] 
+0

は、コードスニペットを置くことはできますか? –

+0

あなたは「誰でも助けてくれますか?しかし、あなたは何が助けを必要としているのかを説明していません。何を計算しようとしていますか?どのようなコードを書いていますか?最初の投稿を改善するためのガイドラインについては、[良い質問をするにはどうすればよいですか?](https://stackoverflow.com/help/how-to-ask)を参照してください。 – chb

答えて

0

これは本当に悪いが説明です。私はあなたがリストをスライスすることを理解しました(私たちは配列ではなく、Pythonのリストと呼んでいます)。開始区切り文字は、そのリストの最初の項目が#で始まり、終了区切り文字が同じ記号/ tag/hashtag /で始まる次の項目です。

1:あなたは文字列は文字列であり、項目betwenカンマがあることを確認してください、あなたのリストを修正する必要があります:まず

array = [ 
    ["author"], 
    ["# something put here"], 
    [23, 345000, 234, 345], 
    ["more numers"], 
    ["more numers"], 
    ["# something put here"], 
    ["more numers"], 
    ["more numers"] 
    ] 

2:次にあなたがそれらのインデックスを検索します区切り文字として使用する行。
注:わかりやすくするために、次のコードでは、常に2行だけが#で始まると想定しています。

start = end = None # Create empty variables 
for index, item in enumerate(array): # Loop that iterates index and data 
    if str(item[0]).startswith("#"): # If data on first item starts with # 
     if start is None: # If start variable is unused yet 
      start = index + 1 # This is the start index 
     else: # If start variable is already used 
      end = index # This is the end index 

3:今、私たちは開始とどこ最後までする場所を、私たちはそれをインデックスstartendを使用して私たちのリストをスライスすることができます知っています。我々は、このための新しいリストを作成:

my_sliced_array = array[start:end] 

ボーナス:は、コードの結果をテストして見るために次のプリントを使用してお気軽に:

print("printing from {} to {}".format(start, end)) 
print(my_sliced_array) 
関連する問題