Python 在f2py中处理字符数组
我在使用f2py时遇到字符数组正常工作的问题。我无法从python访问字符数组,但它们似乎是用fortran正确定义的。下面是一个名为“example.f90”的fortran模块示例 我使用f2py编译fortran:Python 在f2py中处理字符数组,python,fortran,f2py,Python,Fortran,F2py,我在使用f2py时遇到字符数组正常工作的问题。我无法从python访问字符数组,但它们似乎是用fortran正确定义的。下面是一个名为“example.f90”的fortran模块示例 我使用f2py编译fortran:f2py-c example.f90-m example。然后运行python脚本example.py: from example import mod mod.test() print(mod.a) print(mod.b) print(mod.c) 结果是 hi a
f2py-c example.f90-m example
。然后运行python脚本example.py:
from example import mod
mod.test()
print(mod.a)
print(mod.b)
print(mod.c)
结果是
hi a
hi b1 hi b2 hi b3
hi c1 hi c2 hi c3
b'hi a '
b'hi '
Traceback (most recent call last):
File "example.py", line 7, in <module>
print(mod.c)
ValueError: data type must provide an itemsize
你好
高b1高b2高b3
高c1高c2高c3
嗨,a
嗨
回溯(最近一次呼叫最后一次):
文件“example.py”,第7行,在
打印(c版)
ValueError:数据类型必须提供itemsize
Fortran似乎正确定义了b
和c
,尽管我无法从python访问b
或c
我做错了什么?为什么我不能从python访问
b
或c
?为什么打印c
会返回ValueError
?非常感谢您的建议。我尝试了一个类似的代码,只使用了“character,allocatable::…”,但失败了,出现了相同的错误。。。(尽管它适用于reals等)可能,字符被视为相当特殊的角色?@roygvib,从python访问reals对我来说也很有用。即使对于可分配数组,我也尝试了一个类似的代码,只使用了“character,allocatable::…”,但失败了,出现了相同的错误。。。(尽管它适用于reals等)可能,字符被视为相当特殊的角色?@roygvib,从python访问reals对我来说也很有用。即使对于可分配阵列也是如此。
hi a
hi b1 hi b2 hi b3
hi c1 hi c2 hi c3
b'hi a '
b'hi '
Traceback (most recent call last):
File "example.py", line 7, in <module>
print(mod.c)
ValueError: data type must provide an itemsize