Вопрос о массиве, что это за тип? Почему это может работать в коде? - PullRequest
0 голосов
/ 27 октября 2019
Nor = [80,50,150,100,50,70,100,40]
Mid = [150,70,200,120,50,70,100,50]
Sou = [20,100,120,130,100,100,100,50]
Ove = [10,5,10,0,100,70,100,40]
x = np.arange(1,9,1)
width = 0.17

fig, ax = plt.subplots(figsize=(15,5))

rects1 = ax.bar(x - 1.5*width ,Nor, width, label='Nor')
rects2 = ax.bar(x - width/2,Mid, width, label='Mid')
rects3 = ax.bar(x + width/2,Sou, width, label='Mid')
rects4 = ax.bar(x + 1.5*width,Ove, width, label='Mid')



ax.set(xlabel='Season', ylabel='Market share %',
       title='Every season market share')
plt.grid()

legend = ax.legend(loc='upper left', shadow=True, fontsize='x-large',prop={'size': 8})


fig.tight_layout()
plt.show()

Почему строка 6 x = np.arange(1,9,1) не может быть x = [1,2,3,4,5,6,7,8], в чем разница? Я думаю, что разница для типа данных, но почему строка 6 может работать в этом коде?

1 Ответ

0 голосов
/ 27 октября 2019

В то время как x = np.arange(1,9,1) генерирует пустой массив, x = [1,2,3,4,5,6,7,8] - это просто список. Вы можете увидеть разницу в типе данных:

import numpy as np
x = np.arange(1,9,1)
print(type(x))
x = [1,2,3,4,5,6,7,8]
print(type(x))

Вывод:

<class 'numpy.ndarray'>
<class 'list'>

При попытке заменить np.arange(1,9,1) на [1,2,3,4,5,6,7,8] вы получите следующую ошибку:

TypeError: неподдерживаемые типы операндов для -: 'list' и 'float'

Это потому, что вы можете только вычесть число из массива. В списке вы должны вычесть число из каждого элемента в отдельности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...