1

連結を使用して結合しようとしている 2 つの配列があります。

a = np.array(([1,2], [5,6], [9,10]))
b = np.array(([3,4], [7,8], [11,12], [13,14], [17,18]))
c = np.concatenate((a,b), 1)

配列の長さが異なるため、これは機能しません。したがって、len を使用して 2 つの配列の長さを比較し、最小の長さに基づいて c の長さを決定します。

alength = len(a)
blength = len(b)
lengthforc = min(alength, blength)

この例では、最小値lengthforcは 3 です。したがって、if ステートメントを使用して、最後の 2 つの行 (要素) を削除して b の長さを短縮しようとしています。

if blength > lengthforc:
   rowstoremove = blength - lengthforc

別の方法がない限り、この if ステートメントを変更して、必要なことを実行するにはどうすればよいですか (削除する行数が変わるため)。最終的な配列は次のようになります。

>>> print c
  [[ 1  2  3  4]
  [ 5  6  7  8]
  [ 9 10 11 12]]
4

2 に答える 2

1

試してくださいhstack

a = np.array(([1,2], [5,6], [9,10]))
b = np.array(([3,4], [7,8], [11,12], [13,14], [17,18]))
end = min(a.shape[0], b.shape[0])
np.hstack((a[:end], b[:end]))

結果:

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

編集

NumPy 配列が必要ない場合は、リストを使用できます。

a_list = [[1,2], [5,6], [9,10]]
b_list = [[3,4], [7,8], [11,12], [13,14], [17,18]]

たった1行:

[x + y for x, y in zip(a_list, b_list)]

結果:

[[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]]
于 2013-06-02T15:12:03.780 に答える
0

問題が正しく発生したかどうかはわかりませんが(私のソリューションではリストを使用しただけです)、それは単純ですか?

a = [[1,2], [5,6], [9,10]]
b = [[3,4], [7,8], [11,12], [13,14], [17,18]]
c = []
for x,y in zip(a,b):
    c.append(x+y)
于 2013-06-02T15:04:07.247 に答える