title: Cannot concatenate two arrays with numpy - ValueError: all the input array dimensions for the concatenation axis must match exactly
body: <p>I'm facing an issue regarding the strucutre of a dataframe I wish to create.</p>
  <p>I'm actually scraping two sort of datas from a single webpage among many others in order to construct a data set of product list.</p>
  <p>The first <code>array at index 0 has size 3</code> is actually represented by <code>cols = np.array(cols)</code> -- <code>GTIN, LOT, DLC</code>.</p>
  <p>The second <code>array at index 1 has size 6</code> is represented by <code>arr = np.array(results)</code> -- <code>Titre, Marque, Heure, etc...</code>.</p>
  <p>I'm trying to merge two them, to get the output as below see. <strong>The output I wish to get</strong></p>
  <p>here the code:</p>
  <pre><code>import requests
  from bs4 import BeautifulSoup
  import pandas as pd
  import numpy as np
  import re
  
  
  
  ###################_____Parameter_____###################
  urls = 'https://rappel.conso.gouv.fr/categorie/0/{}'
  headers = {'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36'}
  #########################################################
  
  #Collecting links on rappel.gouv
  def list(urls):
      list = []
      for x in range(1,4):
          f_url = urls.format(x)
          list.append(f_url)
      
      return list
  
  url_1 = list(urls)
  
  def get_soup(url_1):
      url_list = []
      for i in url_1:
          r = requests.get(i)
          soup = BeautifulSoup(r.text, 'html.parser')
          for url in soup.find_all('a', {'class' : 'product-link'}):
              url_list.append('https://rappel.conso.gouv.fr'+url['href'])
  
      return url_list
  
  
  url_data = get_soup(url_1)
  
  #Collecting data on each url collected
  def data(url_data):
      data = []
      for row in url_data:
          r = requests.get(row, headers=headers)
          r_get = BeautifulSoup(r.text, 'html.parser')
  
          for content in r_get.find_all('div', {'class' : 'row site-wrapper'}):
              rows = content.findAll('tr')
              for x in rows:
                  cols = x.find_all('td')
                  cols = [element.text.strip() for element in cols]
  
                  cols = np.array(cols)
                  if len(cols) &lt; 3:
                      if not re.match('^(\d{13})$', cols[0, ]):
                          cols = np.hstack(('--', cols))    
                      if re.search('[\d]{2}/[\d]{2}/[\d]{2,4}', cols[0, ]):
                          cols = np.insert(cols, 0, &quot;--&quot;)
                      s = 3 - len(cols)
                      for i in range(0, s):
                          cols = np.hstack((cols, ['--']))
  
                  if len(data) &gt; 0:
                      data = np.vstack((data, cols))
                  else: data = cols
  
                  for products in r_get.find_all('div', {'class' : 'row site-wrapper'}): 
                      title = products.find('p', {'class' : 'h5 product-main-title'}).text
                      brand = products.find('p', {'class' : 'text-muted product-main-brand'}).text.replace('\xa0:\n',': ').strip()
                      category = products.find('p', {'class' : 'product-cat'}).text
                      detail_rappel = products.find_all('div', {'class' : 'card product-practical'})
                      for motif in detail_rappel:
                          val_1 = motif.find('span', {'class': 'val'}).text
  
                  for dh in r_get.find_all('p', {'class' : 'text-muted product-date'}):
                      content = str(dh.find('time'))
                      date = dh.find('time').text.strip()
                      heure = re.search('[\d]{2}:[\d]{2}:[\d]{2,4}', content)
  
                      results = [title, brand, category, val_1, date, heure.group(0)]
                      arr = np.array(results)
                      data = np.column_stack((data, arr))
                      print(data) 
                 
         
      return data
  
  def frame():
      frame_1 = pd.DataFrame(data(url_data), columns=['GTIN', 'LOT', 'DLC', 'Titre', 'Marque', 'Categorie', 'Motif', 'Date de publication', 'Heure de publication'])
      return frame_1
      
  print(frame())
  </code></pre>
  <p>When I run this I get this message</p>
  <pre><code>Traceback (most recent call last):
    File &quot;f:\1_Projets_Python\RappelProduits\RappelConsoV4.py&quot;, line 91, in &lt;module&gt;
      print(frame())
    File &quot;f:\1_Projets_Python\RappelProduits\RappelConsoV4.py&quot;, line 88, in frame
      frame_1 = pd.DataFrame(data(url_data), columns=['GTIN', 'LOT', 'DLC', 'Titre', 'Marque', 'Categorie', 'Motif', 'Date de publication', 'Heure de publication'])
    File &quot;f:\1_Projets_Python\RappelProduits\RappelConsoV4.py&quot;, line 81, in data
      data = np.column_stack((data, arr))
    File &quot;&lt;__array_function__ internals&gt;&quot;, line 5, in column_stack
    File &quot;F:\Logiciels\Python\Python310\lib\site-packages\numpy\lib\shape_base.py&quot;, line 656, in column_stack
      return _nx.concatenate(arrays, 1)
    File &quot;&lt;__array_function__ internals&gt;&quot;, line 5, in concatenate
  ValueError: all the input array dimensions for the concatenation axis must match exactly, but along dimension 0, the array at index 0 has size 3 and the array at index 1 has size 6 
  </code></pre>
  <p>However I thought it was possible to &quot;merge&quot; two differents array by using <code>numpy.column_stack</code> or <code>numpy.concatenate</code> or <code>numpy.c_</code> I tried all three, I got the same issue, I also tried to reshape, I got the same</p>
  <p><strong>The output I wish to get</strong></p>
  <pre><code>             GTIN            Lot                                                DLC                       Titre                          Marque  ...         Date publication Heure Publication
  0   3760125351582  Tous les lots                                                 -- SNEAKERS PM001 Argenté Noir             Marque: PAUL MARIUS  ...    lundi 11 juillet 2022          15:33:06
  1   3760125349626  Tous les lots                                                 -- SNEAKERS PM001 Argenté Noir             Marque: PAUL MARIUS  ...    lundi 11 juillet 2022          15:33:06
  2   3760125349633  Tous les lots                                                 -- SNEAKERS PM001 Argenté Noir             Marque: PAUL MARIUS  ...    lundi 11 juillet 2022          15:33:06
  3   3760125349640  Tous les lots                                                 -- SNEAKERS PM001 Argenté Noir             Marque: PAUL MARIUS  ...    lundi 11 juillet 2022          15:33:06
  4   3760125349657  Tous les lots                                                 -- SNEAKERS PM001 Argenté Noir             Marque: PAUL MARIUS  ...    lundi 11 juillet 2022          15:33:06
  5   3760125349664  Tous les lots                                                 -- SNEAKERS PM001 Argenté Noir             Marque: PAUL MARIUS  ...    lundi 11 juillet 2022          15:33:06
  7   3760125349688  Tous les lots                                                 -- SNEAKERS PM001 Argenté Noir             Marque: PAUL MARIUS  ...    lundi 11 juillet 2022          15:33:06
  8   3760125349695  Tous les lots                                                 -- SNEAKERS PM001 Argenté Noir             Marque: PAUL MARIUS  ...    lundi 11 juillet 2022          15:33:06
  9   3760125349701  Tous les lots                                                 -- SNEAKERS PM001 Argenté Noir             Marque: PAUL MARIUS  ...    lundi 11 juillet 2022          15:33:06
  10  3760125349718  Tous les lots                                                 -- SNEAKERS PM001 Argenté Noir             Marque: PAUL MARIUS  ...    lundi 11 juillet 2022          15:33:06
  11  3324498001170         E1015R        Date de consommation recommandée 15/10/2022 Cerises au sirop BIO                    Marque: Les Comtes de...    lundi 11 juillet 2022          15:28:41
  12  3286450000792     0404220045                                                 -- FARINE DE SEIGLE BIOLOGIQUE             Marque: MOULINS WAAST...    lundi 11 juillet 2022          11:04:21
  13             --             --  LONGE DE THON ALBACORE VENDUE ENTRE LE 28/06 E... LONGE DE THON ALBACORE                  Marque:           /  ...  vendredi 8 juillet 2022          17:57:24
  14  3596710344550         175092             Date limite de consommation 28/09/2022 VERITABLE JAMBON PERSILLE DE BOUR       Marque: AUCHAN LE CHA...  vendredi 8 juillet 2022          17:00:47
  15  8410446378625          37862                                                 -- Mission Labo - COLOR MIX                Marque: DISET        ...  vendredi 8 juillet 2022          16:44:08
  16  3266980337773     2112175637             Date limite de consommation 11/07/2022 Escalope de dinde milanaise             Marque: Le Gaulois   ...  vendredi 8 juillet 2022          14:57:45
  17       20364625              /             Date de durabilité minimale 13/07/2023 Riz Basmati                             Marque: Golden Sun   ...  vendredi 8 juillet 2022          14:56:26
  18  3501940866000            059             Date limite de consommation 01/02/2023 Petits œufs fourrés praliné choco       Marque: Bovetti Choco...  vendredi 8 juillet 2022          13:00:33
  19  3501940866000            062             Date limite de consommation 11/01/2023 Petits œufs fourrés praliné choco       Marque: Bovetti Choco...  vendredi 8 juillet 2022          13:00:33
  21  3501940866000            089             Date limite de consommation 28/02/2023 Petits œufs fourrés praliné choco       Marque: Bovetti Choco...  vendredi 8 juillet 2022          13:00:33
  22  3501940866000            095             Date limite de consommation 28/02/2023 Petits œufs fourrés praliné choco       Marque: Bovetti Choco...  vendredi 8 juillet 2022          13:00:33
  23  3501940866000            097             Date limite de consommation 28/02/2023 Petits œufs fourrés praliné choco       Marque: Bovetti Choco...  vendredi 8 juillet 2022          13:00:33
  24  7613036505307     1325091108             Date de durabilité minimale 31/05/2023 PURINA® PRO PLAN® Original Kitt         Marque: PRO PLAN®    ...  vendredi 8 juillet 2022          11:49:57
  25  7613036505307     1351091108             Date de durabilité minimale 30/06/2023 PURINA® PRO PLAN® Original Kitt         Marque: PRO PLAN®    ...  vendredi 8 juillet 2022          11:49:57
  26  7613036505277     1324091104             Date de durabilité minimale 31/05/2023 PURINA® PRO PLAN® Original Kitt         Marque: PRO PLAN®    ...  vendredi 8 juillet 2022          11:49:57
  27  7613036545099     1325091106             Date de durabilité minimale 31/05/2023 PURINA® PRO PLAN® Original Kitt         Marque: PRO PLAN®    ...  vendredi 8 juillet 2022          11:49:57
  </code></pre>
  <p>I'm learning numpy, it's been couple of days I'm figuring this out, at my level I tried everything with no success... I'm kindly asking your help, so I can understand what's wrong, thank you</p>