首页 > 解决方案 > 如何在 Python Numpy 中将列表添加到 ArrayList

问题描述

如果我有两个数组:

import numpy as np
my_array = np.array([[1,1,"food",5],
                    [[2,1,"food",5],
                    [2,2,"clothes",10]]])
second_array = np.array ([[3,5,"water",3],
                         [3,2,"tea", 8], 
                         [3,4,"pop", 5]])

我想将 second_array 添加到 my_array 中。有谁知道我该怎么做?我试过 np.append 但它删除了数组中的所有列表,只存储值,但我希望我的输出看起来像:

new_array = ([[1,1,"food",5],
             [[2,1,"food",5],
              [2,2,"clothes",10]]
             [[3,5,"water",3],
              [3,2,"tea", 8], 
              [3,4,"pop", 5]]])

标签: pythonnumpy

解决方案


尝试运行您的示例时出现错误:

In [393]: my_array = np.array([[1,1,food,5],
     ...:                     [[2,1,food,5],
     ...:                     [2,2,clothes,10]]])
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-393-0a4854c57a22> in <module>()
----> 1 my_array = np.array([[1,1,food,5],
      2                     [[2,1,food,5],
      3                     [2,2,clothes,10]]])
      4 second_array = np.array ([[3,5,water,3],
      5                          [3,2,tea, 8],

NameError: name 'food' is not defined

将名称更改为字符串:

In [394]: my_array = np.array([[1,1,'food',5],
     ...:                     [[2,1,'food',5],
     ...:                     [2,2,'clothes',10]]])
     ...: second_array = np.array ([[3,5,'water',3],
     ...:                          [3,2,'tea', 8], 
     ...:                          [3,4,'pop', 5]])
     ...:                          
In [395]: my_array
Out[395]: 
array([list([1, 1, 'food', 5]),
       list([[2, 1, 'food', 5], [2, 2, 'clothes', 10]])], dtype=object)
In [396]: second_array
Out[396]: 
array([['3', '5', 'water', '3'],
       ['3', '2', 'tea', '8'],
       ['3', '4', 'pop', '5']], dtype='<U21')

这是两种不同类型的数组。尝试以任何方式加入他们是没有意义的。

如果我清理第一个括号:

In [397]: my_array = np.array([[1,1,'food',5],
     ...:                       [2,1,'food',5],
     ...:                       [2,2,'clothes',10]])
In [398]: my_array
Out[398]: 
array([['1', '1', 'food', '5'],
       ['2', '1', 'food', '5'],
       ['2', '2', 'clothes', '10']], dtype='<U21')

现在我有 2 个具有相同 dtype 和 shape 的数组,可以通过各种方式连接:

In [399]: np.stack((my_array, second_array))
Out[399]: 
array([[['1', '1', 'food', '5'],
        ['2', '1', 'food', '5'],
        ['2', '2', 'clothes', '10']],

       [['3', '5', 'water', '3'],
        ['3', '2', 'tea', '8'],
        ['3', '4', 'pop', '5']]], dtype='<U21')
In [400]: np.vstack((my_array, second_array))
Out[400]: 
array([['1', '1', 'food', '5'],
       ['2', '1', 'food', '5'],
       ['2', '2', 'clothes', '10'],
       ['3', '5', 'water', '3'],
       ['3', '2', 'tea', '8'],
       ['3', '4', 'pop', '5']], dtype='<U21')

object我们可以在创建 2 数组时指定一个dtype。


推荐阅读