如何在Cython中读/写字符串的数据帧(Numpy数组)?你知道吗
当我处理整数或浮点数时,它工作得很好:
# Cython file numpy_.pyx
@boundscheck(False)
@wraparound(False)
cpdef fill(np.int64_t[:,::1] arr):
arr[0,0] = 10
arr[0,1] = 11
arr[1,0] = 13
arr[1,1] = 14
# Python code
import numpy as np
from numpy_ import fill
a = np.array([[0,1,2],[3,4,5]], dtype=np.int64)
print(a)
fill(a)
print(a)
给予
>>> a = np.array([[0,1,2],[3,4,5]], dtype=np.int64)
>>> print(a)
[[0 1 2]
[3 4 5]]
>>> fill(a)
>>> print(a)
[[10 11 2]
[13 14 5]]
另外,以下代码
# Python code
import numpy as np, pandas as pd
from numpy_ import fill
a = np.array([[0,1,2],[3,4,5]], dtype=np.int64)
df = pd.DataFrame(a)
print(df)
fill(df.values)
print(df)
给予
>>> a = np.array([[0,1,2],[3,4,5]], dtype=np.int64)
>>> df = pd.DataFrame(a)
>>> print(df)
0 1 2
0 0 1 2
1 3 4 5
>>> fill(df.values)
>>> print(df)
0 1 2
0 10 11 2
1 13 14 5
然而,当输入是一个字符串数组时,我很难弄清楚如何做同样的事情。例如,如何读取或修改Numpy数组或数据帧:
a2 = np.array([['000','111','222'],['333','444','555']], dtype='U3')
df2 = pd.DataFrame(a2)
我们的目标是通过Cython改变
'000' -> 'AAA'; '111' -> 'BBB'; '222' -> 'CCC'; '333' -> 'DDD'
我确实读过the following NumPy documentation page和the following Cython documentation page,但还是不知道该怎么办。你知道吗
非常感谢你的帮助!你知道吗
目前没有回答
相关问题 更多 >
编程相关推荐