结合python列表和numpy数组时出现的问题?
我有两个python列表和一个numpy数组。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 = []
[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]