0

配列の長さが異なる場合、接着された製品は、新しい製品が2 つの配列の長さの合計と同じ長さ? または: x = [ajjjbjjj] の配列を作成する方法はありますか。つまり、値 [ab] を持つ配列を取得し、その配列の各要素の間に 3 つの js を入力して新しい配列を作成し、[ajjjb] を取得します。 ]

製品のサイズを事前に知っているので、ループでこれを行う明白な方法がありますが、手元にもっと「numpyic」な解決策があるはずです。

「接着」したい両方の配列が同じサイズで、積が [ajbjcj] である場合、つまり、次のように他のすべての場合は簡単です。

np.append(np.zeros((10,1)),np.ones((10,1)),1).reshape(2*10)
array([ 0.,  1.,  0.,  1.,  0.,  1.,  0.,  1.,  0.,  1.,  0.,  1.,  0.,
    1.,  0.,  1.,  0.,  1.,  0.,  1.])
but you cannot do
np.append(np.zeros((10,1)),np.ones((20,1)),1).reshape(20+10)

質問が十分に明確でない場合は申し訳ありませんが、明確にできる部分を教えてください。私の英語は壊れています。

4

1 に答える 1

0

とが の倍数であると仮定するlen(A) == nと、つまり のような整数があり、次のことができます。len(B) == NNnmN = m*n

import numpy as np
A = np.zeros(10)
B = np.ones(20)

n = len(A)
C = np.concatenate([A.reshape(n, 1), B.reshape(n, -1)], axis=1)
C = C.ravel()

これはあなたが質問で持っているものとほとんど同じですが、トリックは B を (N, 1) の代わりに (n, m) に、つまりこの場合 (20, 1) の代わりに (10, 2) に再形成することです。-1inreshapeは "whatever will make it work" の省略形で、怠惰なやり方ですB.reshape(n, len(B)//n)

あなたの質問に基づいて、配列 B は同種の配列 (つまり ) である可能性があるように思われます。all(B == j)その場合、次のようにすることができます。

import numpy as np
A = np.zeros(10)
j = 1.

C = np.zeros([10, 3])
C[:, 0] = A
C[:, 1:] = j
C = C.ravel()
于 2012-11-07T00:58:12.903 に答える