我想迅速用盡可能少的拷貝爲我逐步從CCython Memoryviews - 來自結構數組?
接收結構的可能的多頭排列填寫如果我的結構是隻有小學數據類型,如下所示:
cdef packed struct oh_hi:
int lucky
char unlucky
然後執行以下工作正常:
DEF MAXPOWER = 1000000
cdef oh_hi * hi2u = <oh_hi *>malloc(sizeof(oh_hi)*MAXPOWER)
cdef oh_hi [:] hi2me = <oh_hi[:MAXPOWER]> hi2u
但是,一旦我改變我的結構持有一個字符數組:
cdef packed struct oh_hi:
int lucky
char unlucky[10]
以前memoryview鑄造編譯但在運行時會給出一個:
ValueError: Expected 1 dimension(s), got 1
有沒有一種簡單的方法在用Cython做到這一點?我知道我可以創建一個結構化數組,但是afaik,它不會讓我直接將C結構分配給它。
這與numpy結構化數組似乎與[此問題](https://stackoverflow.com/q/30035287/2588654)非常相似。問題是,如果結構中的第一項是標量,cython似乎不喜歡混合數組和標量值。解決方法是重新排列結構中的項目,以便首先總是有一個數組成員/項目。 – CodeSurgeon