1 / 1 / 0
Регистрация: 26.12.2014
Сообщений: 79

Ошибка TypeError: can't multiply sequence by non-int of type 'numpy.float64' в Python 3.6

11.03.2019, 03:58. Показов 8298. Ответов 2

Студворк — интернет-сервис помощи студентам
Написал код, который должен найти параметры для функции, аппроксимирующей (fitting) смоделированные данные:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
from scipy.optimize import curve_fit
import numpy as np
import random
import matplotlib.pyplot as plt
 
def f(w,a,b):
    return a*w+b
 
def main():
    N = 100
    step = 500/N
    w = []
    for i in range(N):
        w.append(step*(i+1))
    w = np.array(w)
    I = []
    for j in w:
        I.append(2*j+1000+random.randint(1,50))
    I = np.array(I)
    print('length of I = ', len(I))
    start = (3, 1100)
    popt, pcov = curve_fit(f,w,I,p0=start)
    print('popt = ', popt)
    print('pcov = ', pcov)
    
    print('f = ',f(w,*popt))
    print('type of f : ', type(f))
    print('type of f(w,*popt) = ', type(f(w,*popt)))
    print('I = ',I)
    print('type of I : ', type(I))
    
    residuals = f(w,*popt) - I
    w_fit = np.linspace(step,500,200)
    w_fit = list(w_fit)
    I_fit = f(w_fit,*popt)
    fig1, ax1 = plt.subplots()
    plt.scatter(w,I,s=1)
    plt.plot(w_fit,I_fit,'r')
 
    fig2, ax2 = plt.subplots()
    plt.scatter(w,residuals,s=2)
    plt.show()
 
main()
Привожу полный вывод при запуске программы (в конце вывода ошибка TypeError):
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
length of I =  100
popt =  [   2.01156676 1024.65939394]
pcov =  [[ 1.04433263e-04 -2.63693989e-02]
 [-2.63693989e-02  8.83374863e+00]]
f =  [1034.71722772 1044.77506151 1054.83289529 1064.89072907 1074.94856286
 1085.00639664 1095.06423042 1105.12206421 1115.17989799 1125.23773177
 1135.29556556 1145.35339934 1155.41123312 1165.46906691 1175.52690069
 1185.58473447 1195.64256826 1205.70040204 1215.75823582 1225.81606961
 1235.87390339 1245.93173717 1255.98957096 1266.04740474 1276.10523852
 1286.16307231 1296.22090609 1306.27873987 1316.33657366 1326.39440744
 1336.45224122 1346.51007501 1356.56790879 1366.62574257 1376.68357636
 1386.74141014 1396.79924392 1406.85707771 1416.91491149 1426.97274527
 1437.03057906 1447.08841284 1457.14624662 1467.20408041 1477.26191419
 1487.31974797 1497.37758176 1507.43541554 1517.49324932 1527.55108311
 1537.60891689 1547.66675067 1557.72458446 1567.78241824 1577.84025202
 1587.89808581 1597.95591959 1608.01375337 1618.07158716 1628.12942094
 1638.18725472 1648.24508851 1658.30292229 1668.36075607 1678.41858986
 1688.47642364 1698.53425742 1708.59209121 1718.64992499 1728.70775877
 1738.76559256 1748.82342634 1758.88126013 1768.93909391 1778.99692769
 1789.05476148 1799.11259526 1809.17042904 1819.22826283 1829.28609661
 1839.34393039 1849.40176418 1859.45959796 1869.51743174 1879.57526553
 1889.63309931 1899.69093309 1909.74876688 1919.80660066 1929.86443444
 1939.92226823 1949.98010201 1960.03793579 1970.09576958 1980.15360336
 1990.21143714 2000.26927093 2010.32710471 2020.38493849 2030.44277228]
type of f :  <class 'function'>
type of f(w,*popt) =  <class 'numpy.ndarray'>
I =  [1031. 1064. 1071. 1061. 1087. 1109. 1087. 1089. 1107. 1106. 1131. 1163.
 1162. 1145. 1184. 1190. 1183. 1215. 1198. 1242. 1223. 1239. 1252. 1278.
 1288. 1263. 1299. 1302. 1316. 1309. 1334. 1367. 1331. 1386. 1400. 1382.
 1412. 1381. 1423. 1447. 1419. 1426. 1457. 1485. 1463. 1482. 1513. 1522.
 1523. 1517. 1554. 1546. 1574. 1568. 1563. 1595. 1620. 1618. 1633. 1604.
 1652. 1637. 1646. 1642. 1673. 1703. 1715. 1712. 1702. 1701. 1723. 1766.
 1739. 1784. 1764. 1793. 1798. 1785. 1808. 1810. 1815. 1866. 1867. 1879.
 1856. 1907. 1915. 1902. 1929. 1920. 1931. 1956. 1971. 1980. 1979. 2008.
 2001. 2006. 2032. 2046.]
type of I :  <class 'numpy.ndarray'>
Traceback (most recent call last):
  File "C:/test_linear.py", line 44, in <module>
    main()
  File "C:/test_linear.py", line 35, in main
    I_fit = f(w_fit,*popt)
  File "C:/test_linear.py", line 7, in f
    return a*w+b
TypeError: can't multiply sequence by non-int of type 'numpy.float64'
Не могу понять, в чём конкретно ошибка? Подскажите, пожалуйста.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
11.03.2019, 03:58
Ответы с готовыми решениями:

Ошибка TypeError: can't multiply sequence by non-int of type 'str'
https://open.kattis.com/problems/runlengthencodingrun задача Суть задачи зашифровать сообщение. В первом случае, при шифре, пишется буква...

TypeError: can't multiply sequence by non-int of type 'builtin_function_or_method'
пишу библиотеку для создание таблиц в питоне столкнулся с ошибкой Traceback (most recent call last): File...

Ошибка can't multiply sequence by non-int of type 'float'
НЕ могу понять почему в 20 строке выдает ошибку can't multiply sequence by non-int of type 'float' : n = int(input()) m =...

2
 Аватар для Andrey B
170 / 122 / 61
Регистрация: 06.02.2015
Сообщений: 300
11.03.2019, 07:19
Лучший ответ Сообщение было отмечено Рыжий Лис как решение

Решение

В функции f w у тебя массив. Ты умножаешь число (a) на массив.
Если хочешь просто запустить замени функцию на w+b

Добавлено через 8 минут
Python
1
2
def f(w,a,b):
    return a*np.array(w)+b
так вроде запустилось. О корректности молчу
1
1 / 1 / 0
Регистрация: 26.12.2014
Сообщений: 79
11.03.2019, 13:52  [ТС]
Спасибо! Я нашёл ошибку:
Python
1
w_fit = list(w_fit)
Эта строчка лишняя. Тогда вариант
Python
1
return a*w+b
работает.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.03.2019, 13:52
Помогаю со студенческими работами здесь

can't multiply sequence by non-int of type 'float'
Всем доброго времени суток! Написал такой небольшой код, он вычисляет процент скидки для выбранного товара по количеству недель, которое...

ошибка "can't multiply sequence by non-int of type 'float'"
Здравствуйте, я студент первого курса. Нам задали домашнюю работу, в которой необходимо с помощью модуля math решить уравнение. Значения...

При вводе знака "-" и написании двух чисел выводит ошибку: TypeError: can't multiply sequence by non-int
what = int(input(&quot;Что делаем?: + - * / :&quot;)) if what == &quot;+&quot;: a = input(&quot;Введите 1 число: &quot;) b = input(&quot;Введите 2 число:...

Ошибка: TypeError: unsupported operand type(s) for >>: 'str' and 'int'
class Note(): def __init__(self, note, found=False): self.note = note self.found = found self.pith = ...

TypeError: unsupported operand type(s) for *: 'int' and 'type'
Подскажите что за ошибка? TypeError: unsupported operand type(s) for *: 'int' and 'type' import math a=float(input(&quot;Введите...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

Новые блоги и статьи
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru