#python #arrays #numpy #web-scraping
#python #массивы #numpy #веб-очистка
Вопрос:
Итак, недавно я выполнял некоторые манипуляции с массивами, и у меня возникли некоторые проблемы. Во-первых, вот мой код:
from numpy import array, transpose, reshape, insert, delete, array_split, append
from bs4 import BeautifulSoup as bs
from requests import get
html = get(source["Financial Data"]).text
html = bs(html,"lxml") #Gets the html data for scraping
table = html.find("table",class_="mytables")
table = [i for i in [[p.text for p in i] for i in table.find_all("tr")] if i!=[]] #Gets the data to be scraped and places it in list form.
table = array_split(table,10) #Splits the data
values = array()
for i in range(len(table)): #Transposes the data to a flatter form and strips the headings column
table[i][0][1] = table[i][0][0][-10:]
table[i] = delete(table[i],0,axis=1)
table[i] = table[i].transpose()
for i in range(len(table)): #Should create a new array composed of other arrays so that it's presented in tabular form.
values = append(values,table[i][0],axis=0)
table
дает мне это:
Который в основном представляет собой список с некоторыми массивами внутри него. Теперь я хочу преобразовать данные внутри него во что-то вроде этого:
Обратите внимание, что данные на втором рисунке отличаются. Я просто хочу дать вам представление о том, как я хочу, чтобы конечный результат выглядел. По сути, все массивы должны быть наложены друг на друга, чтобы получить конечный результат, как указано выше. Однако мой конечный результат для значений таков:
Это совсем не то, чего я хочу. Массивы были просто добавлены вертикально. Как мне получить то, что я хочу?
Комментарии:
1. я думаю, вы ищете numpy.vstack
2. @luigigi это сделало именно то, что я хотел. Спасибо.
3. Как ваш код выполнялся с этой строкой
values = array()
?
Ответ №1:
Вместо:
values = append(values,table[i][0],axis=0)
используйте:
values = append(values,table[i][0],axis=1)
Комментарии:
1.Повторение
np.append
в цикле является дурным тоном, даже когда оно работает (получение исходногоvalues
массива сложно, если вы не понимаете размеры). Withaxis
np.append
— это, по сутиnp.concatenate
, вызов.