22

私は Python/NumPy を使用しており、次のような 2 つの配列があります。

array1 = [1 2 3]
array2 = [4 5 6]

そして、新しい配列を作成したいと思います:

array3 = [[1 2 3], [4 5 6]]

それに項目を追加します。たとえば、追加する新しいアイテムが次の場合:

array4 = [7 8 9]
array5 = [10 11 12]

次に、array3 は、以下に示すような 2 行 2 列の配列になります。

array3= [[1 2 3], [4 5 6]
         [7 8 9], [10 11 12]]

配列の要素がコンマで区切られていないため、問題があるようです。

4

4 に答える 4

11

コンマなしで配列を記述するのは奇妙に思えます (それはMATLAB 構文ですか?)

多次元配列に関する NumPy のドキュメントを試してみましたか?

NumPy には、項目を NumPy の n 次元配列に追加するための「Python のような」append メソッドがあるようです。

>>> p = np.array([[1,2],[3,4]])

>>> p = np.append(p, [[5,6]], 0)

>>> p = np.append(p, [[7],[8],[9]],1)

>>> p
array([[1, 2, 7], [3, 4, 8], [5, 6, 9]])

こちらもすでに回答済み...

MATLAB ユーザー向けのドキュメントから:

行列 MATLAB リテラルの形式で文字列を取る行列コンストラクタを使用できます。

mat("1 2 3; 4 5 6")

or

matrix("[1 2 3; 4 5 6]")

試してみて、どうなるか教えてください。

于 2012-08-18T18:12:31.197 に答える
4

コンマなしでリストを作成すると問題が発生します。コンマを区切り文字として使用するようにデータを変換するのはそれほど難しくありません。

そこにコンマを入れたら、比較的単純なリスト作成操作です:

array1 = [1,2,3]
array2 = [4,5,6]

array3 = [array1, array2]

array4 = [7,8,9]
array5 = [10,11,12]

array3 = [array3, [array4, array5]]

テストすると、次のようになります。

print(array3)

[[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 11, 12]]]

また、インデックスを付けてテストすると、2 行 2 列で構成される行列を正しく読み取ることができます。

array3[0][1]
[4, 5, 6]

array3[1][1]
[10, 11, 12]

それが役立つことを願っています。

于 2015-06-08T15:50:27.193 に答える
2

ファイルがタブで区切られた数値のみの場合は、csv ライブラリを使用してみてください: http://docs.python.org/library/csv.html (区切り文字を '\t' に設定できます)

すべての行が行列の行を表し、整数がスペース\タブで区切られ、'arrayname = [...]' 構文でラップされているテキスト ファイルがある場合は、次のようにする必要があります。

import re
f = open("your-filename", 'rb')
result_matrix = []
for line in f.readlines():
    match = re.match(r'\s*\w+\s+\=\s+\[(.*?)\]\s*', line)
    if match is None:
        pass # line syntax is wrong - ignore the line
    values_as_strings = match.group(1).split()
    result_matrix.append(map(int, values_as_strings))
于 2012-08-19T08:31:42.090 に答える