2017-06-04 5 views
1
import numpy as np 
a=np.array([2,3,4,6,7,4,5,3,2,1,9,8,7,6,4,2]) 
## a has 16 elements 
b=np.array([1,5,3,7]) 
""" i want this: 
a[:4] - b[1], a[4:8]-b[2], a[8:12]-b[3], a[12:16]-b[4] in one array 
and it should look like 
c=numpy.array[1,2,3,5,2,-1,0,-2....] 

これは私の問題の単なる例です。したがって、グループを使用して行うことはできません。これを解決するにはループが必要です。配列の一部と配列の一部との間で操作を行う方法はありますか?

答えて

0

アレイaの形状を変更し、それを操作したり、平坦化したりできます。

In [24]: import numpy as np 

In [25]: a=np.array([2,3,4,6,7,4,5,3,2,1,9,8,7,6,4,2]) 

In [26]: b=np.array([1,5,3,7]) 

In [27]: (a.reshape(4,4).T - b).T.ravel() 
Out[27]: array([ 1, 2, 3, 5, 2, -1, 0, -2, -1, -2, 6, 5, 0, -1, -3, -5]) 
+0

大変ありがとうございます。もう一度質問してください。私はリスト[1,2]、[3,4]を持っています、どうすれば[1,2,3,4]にすることができますか? –

+0

@SelcukYalcinkaya、これがPythonリストの場合、一般的なアプローチは 'itertools import chain'と' list(chain(* [[1,2]、[3,4]])) 'です。 – Akavall

+0

Uhmはい、それはPythonのリストですが、私のリストは私が入力できるよりも長く、それは単なる例でした。これはこれのためにこれでしょうか? list(chain(* a))もし私がチェーンを作りたいならaがリストであるか? –

関連する問題