在将NumPy数组转换为R数据集时遇到一些困难。我在灰度上有2362 x 2163的2D图像。我必须导入每个像素的灰度值以进行一些统计分析。首先,这是我导入的过程:
import cv2
import numpy as np
from skimage import img_as_ubyte
from skimage import data
from rpy2.robjects import r
from rpy2.robjects import pandas2ri
from pandas import DataFrame
pandas2ri.activate()
首先,我使用cv2作为NumPy数组导入图像,以防万一我将数组转换为0到255(256灰度级)之间的值。
xchest = cv2.imread("/home/user/xchest.tif", cv2.IMREAD_GRAYSCALE)
xchestsk = img_as_ubyte(xchest)
输出:
type(xchestsk)
是:
<class 'numpy.ndarray'>
我目视检查了一个数组,正如预期的那样:
[[8, 8, 9, ... 200, 234, 245]...[250, 234, 134, ... 67, 8, 8]]
我需要在RStudio上可以使用和分析的简单数据集上的所有像素信息。我尝试过:
xchest_R = DataFrame(xchestsk)
xchest_R = r.data('xchestsk')
r.assign("test", xchest_R)
r("save(test, file='/home/user/xchest.gzip', compress=TRUE)")
但是当我将其加载到R上时:
> load("/home/user/xchest.gzip")
我刚得到一个值:test > "xchestsk"
就像我刚导入一个字符串一样。
我尝试过:
np.save("/home/user/xchest.npy", xchestsk)
但是当我尝试使用以下命令将其导入R时:
> library(RcppCNPy)
> xchest_R <- npyLoad("/home/user/xchest.npy", "integer")
RStudio崩溃,我必须重新启动会话。
最后,我尝试将NumPy数组转换为CSV文件:
np.savetxt("/home/eera5607/xchest.csv", xchestsk, delimiter=",")
但是当我将其导入R:
> xchest_data = read.csv(file="/home/eera5607/xchest.csv", header=FALSE, sep=",")
我无法进行简单的统计分析,例如:
> mean(xchest_data)
因为我收到此警告:
> argument is not numeric or logical: returning NA
我尝试使用以下方法将数据转换为一个变量和5000000+点:
xchest_list = xchestsk.tolist()
xchest_ov = []
for list in xchest_list:
xchest_ov += list
然后,我将xchest_ov
列表转换为CSV,但在RStudio中得到了相同的警告。
我需要导入所有这些值,如果可能的话,保持矩阵结构(但不是必须的,至少将像素值作为常规R数据集导入),我可以对其进行一些统计分析。我知道我可以直接在Python上进行一些分析,但是我希望在RStudio上获得这些数据。我对这些主题知识很少。我是放射科医生,这是我第一次与R合作。