將結構化numpy數組中添加字段的最簡單方法是什麼?它可以破壞性地完成,還是需要創建一個新的數組並複製現有的字段?每個字段的內容是否連續存儲在內存中,以便可以高效地完成這種複製?將字段添加到結構化numpy數組中
20
A
回答
19
如果您使用numpy 1.3,還有numpy.lib.recfunctions.append_fields()。
對於許多安裝,您需要import numpy.lib.recfunctions
才能訪問此操作。 import numpy
不會讓人看到numpy.lib.recfunctions
6
import numpy
def add_field(a, descr):
"""Return a new array that is like "a", but has additional fields.
Arguments:
a -- a structured numpy array
descr -- a numpy type description of the new fields
The contents of "a" are copied over to the appropriate fields in
the new array, whereas the new fields are uninitialized. The
arguments are not modified.
>>> sa = numpy.array([(1, 'Foo'), (2, 'Bar')], \
dtype=[('id', int), ('name', 'S3')])
>>> sa.dtype.descr == numpy.dtype([('id', int), ('name', 'S3')])
True
>>> sb = add_field(sa, [('score', float)])
>>> sb.dtype.descr == numpy.dtype([('id', int), ('name', 'S3'), \
('score', float)])
True
>>> numpy.all(sa['id'] == sb['id'])
True
>>> numpy.all(sa['name'] == sb['name'])
True
"""
if a.dtype.fields is None:
raise ValueError, "`A' must be a structured numpy array"
b = numpy.empty(a.shape, dtype=a.dtype.descr + descr)
for name in a.dtype.names:
b[name] = a[name]
return b
相關問題
- 1. 將字段添加到結構化numpy數組(3)
- 2. 如何將'RowNumber'字段添加到結構化的numpy數組中?
- 3. 添加層次結構到numpy結構化數組
- 4. numpy將1D數組堆疊到結構化數組中
- 5. python字典numpy結構化數組
- 6. 添加字段,以結構化numpy的陣列(2)
- 7. 將數據添加到結構數組
- 8. numpy嵌套結構化數組字段訪問
- 9. numpy中的結構化數組的ndim?
- 10. 如何將結構添加到C中的結構數組?
- 11. 將數組中的元素添加到結構數組中
- 12. 如何將結構添加到結構數組的結尾?
- 13. PHP - 將字段/列添加到數組
- 14. 分配給numpy結構化數組
- 15. 如何將列添加到numpy數組
- 16. numpy:如何一次填充結構化數組中的多個字段
- 17. numpy數組作爲數據類型在結構化數組中?
- 18. 如何將數組(double)作爲字段添加到結構變量?
- 19. 如何將新字段添加到Matlab中的非空結構?
- 20. 將結構數組的字段提取到新數組
- 21. 將新列/數組添加到Numpy數組中
- 22. 將字段添加到Solr架構
- 23. 結構化標記將模型添加到產品數據中
- 24. 添加numpy數組
- 25. 將OpenCMS結構化內容XML字段映射到SOLR字段
- 26. 使用mmap添加到結構數組
- 27. 添加結構到一個數組
- 28. 將2D numpy陣列轉換爲結構化數組
- 29. 如何將NumPy數組附加到NumPy數組中
- 30. 向numpy結構數組添加新記錄
可以修改這個以避免重複記憶嗎? (請參閱[此問題](http://stackoverflow.com/q/39965994/974555)) – gerrit 2016-10-10 20:21:57