2015-11-17 43 views
0

此問題已被編輯爲更有意義。如何將值插入numpy記錄數組中?

最初的問題是如何將值插入numpy記錄數組中,並且我已經成功了但仍然存在問題。基於下面的網站,我一直在將值插入記錄數組中。

Python代碼

instance_format={ 
    'names' : ('name','offset'), 
    'formats' : ('U100','U30')} 

instance=np.zeros(20,dtype=instance_format) 

#I am placing values in the array similar to this 
instance[0]['name']="Wire 1" 
instance[1]['name']="Wire 2" 
instance[2]['name']="Wire 3" 


instance[0]['offset']="0x103" 
instance[1]['offset']="0x104" 
instance[2]['offset']="0x105" 

#Here is the insertion statement that works 
instance1 = np.insert(instance1,1,"Module one") 

print(instance1) 

輸出

[('One Wire 1', '0x103') 
('Module One', 'Module One') 
('One Wire 2', '0x104') 
('One Wire 3', '0x105') 

所以INSERT語句的作品,但它插入它無論是在名稱和偏移字段。我想只在名稱字段中插入它。我如何?

感謝

回答

0

我不明白你的意思是:

我想插入的第二個元素名稱爲「保留」,這將使得該陣列有以下內容 [」單線實例1' , '保留', '單線實例2', '單線實例3']

你想:

instance[1] = 'Reserved','', '' 

+0

嗨,請檢查編輯,因爲數組索引爲0它將是實例[1] ='','保留' – GoldenEagle

1

instance

In [470]: instance 
Out[470]: 
array([('', '', ''), ('', '', ''), ('', '', ''), ('', '', ''), 
     ('', '', ''), ('', '', ''), ('', '', ''), ('', '', ''), 
     ('', '', ''), ('', '', ''), ('', '', ''), ('', '', ''), 
     ('', '', ''), ('', '', ''), ('', '', ''), ('', '', ''), 
     ('', '', ''), ('', '', ''), ('', '', ''), ('', '', '')], 
     dtype=[('name', '<U100'), ('module', '<U100'), ('offset', '<U30')]) 

看起來並不像

['One Wire Instance 1', 'One Wire Instance 2', 'One Wire Instance 3'] 

你說的是一個創紀錄的instance,這將與每個字符串作爲name顯示爲

('One Wire Instance 1', 'One Wire Instance 2', 'One Wire Instance 3') 

module ,和offset

或者是這3個字符串例如instance['name'][:3],3個記錄中的'名稱'字段?

instance數組中插入新記錄是一件事,向數組中添加新字段是另一回事。


要與結構數組使用np.insert,您需要提供正確的D型1個元素的數組。

隨着新instance

In [580]: newone = np.array(("module one",'',''),dtype=instance.dtype) 
In [581]: newone 
Out[581]: 
array(('module one', '', ''), 
     dtype=[('name', '<U100'), ('module', '<U100'), ('offset', '<U30')]) 

In [582]: np.insert(instance,1,newone) 
Out[582]: 
array([('Wire 1', '', '0x103'), ('module one', '', ''), 
     ('Wire 2', '', '0x104'), ('Wire 3', '', '0x105')], 
     dtype=[('name', '<U100'), ('module', '<U100'), ('offset', '<U30')]) 

np.insert只是執行這些步驟的功能:

In [588]: instance2 = np.zeros((4,),dtype=instance.dtype) 
In [589]: instance2[:1]=instance[:1] 
In [590]: instance2[2:]=instance[1:3] 
In [591]: instance2 
Out[591]: 
array([('Wire 1', '', '0x103'), ('', '', ''), ('Wire 2', '', '0x104'), 
     ('Wire 3', '', '0x105')], 
     dtype=[('name', '<U100'), ('module', '<U100'), ('offset', '<U30')]) 
In [592]: instance2[1]=newone 
In [593]: instance2 
Out[593]: 
array([('Wire 1', '', '0x103'), ('module one', '', ''), 
     ('Wire 2', '', '0x104'), ('Wire 3', '', '0x105')], 
     dtype=[('name', '<U100'), ('module', '<U100'), ('offset', '<U30')]) 

它創建正確的目標大小的新陣,從原始數組複製元素,並將新陣列放入空槽中。

+0

嗨,請檢查編輯 – GoldenEagle

+0

我添加了一個如何使用'insert'的例子。 – hpaulj

相關問題