Попытка преобразовать список массивов в массив

#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 массива сложно, если вы не понимаете размеры). With axis np.append — это, по сути np.concatenate , вызов.