结合python列表和numpy数组时出现的问题?

结合python列表和numpy数组时出现的问题?,python,arrays,list,numpy,Python,Arrays,List,Numpy,我有两个python列表和一个numpy数组。numpy数组如下所示: [array([93495052.969556, 98555123.061462])] [array([1000976814.605984, 998276347.359732])] [array([6868127850.435482, 6903911250.620625])] [array([775127467.947004, 802369832.938230])] 此numpy数组由以下代码组成: array1 = []

我有两个python列表和一个numpy数组。numpy数组如下所示:

[array([93495052.969556, 98555123.061462])]
[array([1000976814.605984, 998276347.359732])]
[array([6868127850.435482, 6903911250.620625])]
[array([775127467.947004, 802369832.938230])]
numpy数组
由以下代码组成:

array1 = []
company = []
state = []

def process_chunk(chuk):

    training_set_feature_list = []
    training_set_label_list = []
    test_set_feature_list = []
    test_set_label_list = []
    np.set_printoptions(suppress=True)

    array2 = []


    # to divide into training & test, I am putting line 10th and 11th in test set
    count = 0
    for line in chuk:
        # Converting strings to numpy arrays
        if count == 9:   
            test_set_feature_list.append(np.array(line[3:4],dtype = np.float))
            test_set_label_list.append(np.array(line[2],dtype = np.float))
            company.append(line[0])
            state.append(line[1])
        elif count == 10:
            test_set_feature_list.append(np.array(line[3:4],dtype = np.float))
            test_set_label_list.append(np.array(line[2],dtype = np.float))

        else:    
            training_set_feature_list.append(np.array(line[3:4],dtype = np.float))
            training_set_label_list.append(np.array(line[2],dtype = np.float))
        count += 1
    # Create linear regression object
    regr = linear_model.LinearRegression()
    # Train the model using the training sets
    regr.fit(training_set_feature_list, training_set_label_list)

    #print test_set_feature_list

    array2.append(np.array(regr.predict(test_set_feature_list),dtype = np.float))
    np.set_printoptions(formatter={'float_kind':'{:f}'.format})
    for items in array2:
        array1.append(items)
array1
是我想与两个python列表连接的numpy数组

第一个python列表是
公司
,如下所示:

[array([93495052.969556, 98555123.061462])]
[array([1000976814.605984, 998276347.359732])]
[array([6868127850.435482, 6903911250.620625])]
[array([775127467.947004, 802369832.938230])]

第二个python列表是状态:

['Alabama','Alabama','Alabama','Alabama',…]

现在我要做的是形成一个列表,它具有以下结构:

('OT', 'Alabama', 729, 733)
('OT', 'Alabama', 124, 122)
('OT', 'Arizona', 122, 124)
我写了这行代码-
final\u list=zip(公司、州、阵列1)
,但这会产生这个输出(在数组元素周围添加了
array
[]
):


如何将这些列表和数组连接起来,形成一个没有上述问题的列表?

如果
array1
看起来像-

array1 = np.array([np.array([729, 733]), np.array([124, 122]) ...])
虽然给定了您的代码(以及
array1.append()
的用法,但看起来
array1
是一个列表)。您可以首先将
array1
列表转换为
numpy.array
as-

narray1 = np.array(array1)           #This step not necessary , if array1 is already numpy array , in that case use `array1` instead of `narray1` .
然后,如果每个元素只有两个值,则可以执行以下操作-

final_list = zip(company,state,narray1[:,0], narray1[:,1])

演示-

In [59]: array1 = [np.array([729, 733]), np.array([124, 122])]

In [60]: company = ['OT', 'OT']

In [61]: state = ['Alabama', 'Alabama']

In [62]: narray1 = np.array(array1)

In [63]: final_list = zip(company,state,narray1[:,0], narray1[:,1])

In [65]: final_list
Out[65]: [('OT', 'Alabama', 729, 733), ('OT', 'Alabama', 124, 122)]

看起来您正试图创建一个结构化数组,或其等效列表(元组列表)

为了方便起见,让我们用数据创建一个元组列表。我将不详细介绍如何从其他作品中创建此内容(目前):

定义复合
dtype
(几种可能的格式之一):

以及结构化阵列:

In [24]: A=np.array(data,dtype=dt)

In [25]: A
Out[25]: 
array([('OT', 'Alabama', 729, 733), ('OT', 'Alabama', 124, 122),
       ('OT', 'Arizona', 122, 124)], 
      dtype=[('f0', 'S2'), ('f1', 'S10'), ('f2', '<i4'), ('f3', '<i4')])
转换回元组列表:

In [28]: A.tolist()
Out[28]: 
[('OT', 'Alabama', 729, 733),
 ('OT', 'Alabama', 124, 122),
 ('OT', 'Arizona', 122, 124)]
您还可以创建大小和数据类型正确的空(或零)数组,并逐行或逐字段填充它

A1 = np.zeros((3,),dtype=dt)
A1['f0']=['OT','OT','OT']
A1['f2']=np.array([729,124,122])
etc
如果数字位于(3,2)整数数组中,则可以使用:

A1['f2']=x[:,0]
A1['f3']=x[:,1]

array1看起来像什么?你能做
打印(array1)
并更新结果吗?@AnandSKumar-its显示在我的帖子中above@AnandSKumar我已经提供了我的确切代码,它构成了array1和array2。这个函数运行了多次。我得到了一些奇怪的输出结构。这可能是因为我的numpy数组的形成方式。我已经更新了我上面的帖子,加入了组成numpy数组的代码使用
*
后得到的输出是什么?请尝试使用
array2
,使用
regr.predict(test\u set\u feature\u list)的结果是什么
like?
array2
是我代码中的临时数组,
array1
是全局数组。我没有使用
array2
,因为每次迭代代码都会刷新它。因此,在刷新之前,我将array2的内容添加到全局array1,然后您需要显示
array1
的精确打印,您显示的数组看起来不是有效数组(指向问题中的数组)。
In [28]: A.tolist()
Out[28]: 
[('OT', 'Alabama', 729, 733),
 ('OT', 'Alabama', 124, 122),
 ('OT', 'Arizona', 122, 124)]
A1 = np.zeros((3,),dtype=dt)
A1['f0']=['OT','OT','OT']
A1['f2']=np.array([729,124,122])
etc
A1['f2']=x[:,0]
A1['f3']=x[:,1]