Для набора данных в первой строке я применил набор шагов, чтобы создать новую строку.Мне нужно применить этот набор шагов для всего набора данных (для остальных строк).Вручную это заняло бы много времени, я попытался написать цикл for, который будет работать в диапазоне длин строк (включая последнюю строку).Но я получаю ошибку.Буду признателен за вашу помощь.Спасибо.
Набор шагов:
Для первой части
- выведите первую ненулевую запись,
- перестановка оставшихся 20 записей
- и умножение их на ненулевое значение.
Для второй части
- применяя сопоставление, которое преобразует оставшиеся 20 записей (неперестановленную версию) с использованием сопоставления в одно число изатем умножьте на [1x20] матрицу / массив только с одним «1» и оставшимся «0».
- Затем, наконец,
- добавьте результат первого и второгочасть для печати матрицы [1x20].
Мне удалось сделать это для первой строки, но я хочу сделать это для всех 483 строк, однако я не могу этого сделать.)
for i in range(len(df0.index)+1):
a=df0.iloc[i].values
y= []
for i in range(len(a)):
if a[i] != b[0]: y.append(a[i])
y
import itertools
d=(list(itertools.permutations(y[0:7])))
p1=random.choice(d)
e=(list(itertools.permutations(y[7:14])))
p2=random.choice(e)
f=(list(itertools.permutations(y[14:])))
p3=random.choice(f)
permutation=np.concatenate([p1, p2, p3])
permutation
xpi=b[0]*permutation
y1=np.array(y[:7])
h1=((y1[0] *y1[1]) + (y1[2] * y1[3]) +(y1[4] *y1[5])) * y1[6]
y2=np.array(y[7:14])
h2=((y2[0] *y2[1]) + (y2[2] * y2[3]) +(y2[4] *y2[5])) * y2[6]
y3=np.array(y[14:])
h3=(y3[0]*y3[1]*y3[2])+(y3[3]*y3[4]*y3[5])
h=h1+h2+h3
i=np.array([1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0])
hy=h*i
fxy= xpi+hy
print(fxy)
ValueError Traceback (most recent call last)
<ipython-input-116-103cb4f4f61d> in <module>
36 hy=h*i
37
---> 38 fxy= xpi+hy
39 print(fxy)
ValueError: operands could not be broadcast together with shapes (21,) (20,)