1

Тема: Помилка TypeError: only size-1 arrays can be converted to Python scala

Підкажіть, будь ласка, як вирішити цю помилку.

Traceback (most recent call last):
File
f2_x.append(9*log(x)+9)
TypeError: only size-1 arrays can be converted to Python scalars

І ще не розумію, чому при виводі f1_x, видає кілька разів один і той ж список значень

from math import log
 
import numpy as np
 
x = np.arange(0, 5, 0.1)
 
f1_x = []
f2_x = []
 
f11_star = []
f22_star = []
 
f1_star = 20
f2_star = 10
 
for i in range (x.size):
    f1_x.append(20+6*x-3*x*x)
    f2_x.append(9*log(x)+9)
 
    f11_star.append(f1_star)
    f22_star.append(f2_star)
 
print("Значення f1(x): ", f1_x)
print("Значення f2(x): ", f2_x)

2

Re: Помилка TypeError: only size-1 arrays can be converted to Python scala

GPT-4 написав:

Проблема виникає через те, що ви намагаєтеся застосувати функцію log() з модуля math до масиву numpy. Функція log() з модуля math приймає скаляр, а не масив. Щоб вирішити цю проблему, вам потрібно використовувати функцію np.log() замість log() з модуля math. Також, вам слід ітерувати по елементах масиву x. Ось виправлений код:

import numpy as np

x = np.arange(0, 5, 0.1)

f1_x = []
f2_x = []

f11_star = []
f22_star = []

f1_star = 20
f2_star = 10

for xi in x:
    f1_x.append(20 + 6 * xi - 3 * xi * xi)
    f2_x.append(9 * np.log(xi) + 9)

    f11_star.append(f1_star)
    f22_star.append(f2_star)

print("Значення f1(x): ", f1_x)
print("Значення f2(x): ", f2_x)

Проте, цей код спричинить помилку, коли буде намагатися обчислити логарифм від нуля. Щоб уникнути цього, вам потрібно починати масив x з додатнього значення, наприклад:

x = np.arange(0.1, 5, 0.1)

Саме через те, що ви використовуєте однакові дані для різних списків, друкуються однакові значення. Виправлення коду, як показано вище, повинно вирішити цю проблему.

3

Re: Помилка TypeError: only size-1 arrays can be converted to Python scala

Прихований текст
frz написав:
GPT-4 написав:

Проблема виникає через те, що ви намагаєтеся застосувати функцію log() з модуля math до масиву numpy. Функція log() з модуля math приймає скаляр, а не масив. Щоб вирішити цю проблему, вам потрібно використовувати функцію np.log() замість log() з модуля math. Також, вам слід ітерувати по елементах масиву x. Ось виправлений код:

import numpy as np

x = np.arange(0, 5, 0.1)

f1_x = []
f2_x = []

f11_star = []
f22_star = []

f1_star = 20
f2_star = 10

for xi in x:
    f1_x.append(20 + 6 * xi - 3 * xi * xi)
    f2_x.append(9 * np.log(xi) + 9)

    f11_star.append(f1_star)
    f22_star.append(f2_star)

print("Значення f1(x): ", f1_x)
print("Значення f2(x): ", f2_x)

Проте, цей код спричинить помилку, коли буде намагатися обчислити логарифм від нуля. Щоб уникнути цього, вам потрібно починати масив x з додатнього значення, наприклад:

x = np.arange(0.1, 5, 0.1)

Саме через те, що ви використовуєте однакові дані для різних списків, друкуються однакові значення. Виправлення коду, як показано вище, повинно вирішити цю проблему.

Прихований текст

Ого, воно і таке вміє?

4

Re: Помилка TypeError: only size-1 arrays can be converted to Python scala

Прихований текст

як бачите

5

Re: Помилка TypeError: only size-1 arrays can be converted to Python scala

Прихований текст
Chemist-i написав:
frz написав:

GPT-...

Ого, воно і таке вміє?

frz написав:

як бачите

frz - місцевий промоутер GPT.

Подякували: Chemist-i, Firefox is dead2

6

Re: Помилка TypeError: only size-1 arrays can be converted to Python scala

Прихований текст

Є час, натхнення і преміум-акаунт...