Еще в 2016 году у меня была похожая проблема. Решение, которое придумали Авинаш Балакришнан и я, можно найти здесь:
http://thecoatlessprofessor.com/programming/numpy-arrays-to-r-array-objects/
Короче говоря, мы использовали rpy2
для обработки преобразования NumPy в массив R .
import os, sys, getopt
import numpy as np
import re
from rpy2.robjects import r
from rpy2.robjects.numpy2ri import numpy2ri
def convert_numpy(path_to_data, fname, export_dir):
"""Convert NumPy N-D array to R object
Keyword arguments:
path_to_data -- full dir path to data
fname -- partial file name to match
export_dir -- Name of export dir added to data dir
"""
# Create a directory path
if not os.path.exists("%s/%s" % (path_to_data,export_dir)):
os.makedirs("%s/%s" % (path_to_data,export_dir))
# Get list of files in the directory
files = os.listdir(path_to_data)
# Sort out which files are of each type
numpy_files = sorted([f for f in files if fname in f])
# Begin process conversion
for numpy_fname in numpy_files:
# Load in 4D Numpy Array
d = np.load("%s/%s" % (path_to_data, numpy_fname))
# Remove the file extension of .npy binary
file_name = re.sub('\.npy$', '', numpy_fname)
# Convert the numpy object to R
ro = numpy2ri(d)
# Assign the name
r.assign("%s" % file_name,ro)
# Export to .gzip readable by R's load()
r("save(%s, file='%s/%s/%s.gzip', compress=TRUE)" % (file_name,path_to_data,export_dir,file_name))
Это можно прочитать в R , используя:
load("a_patches_b1.gzip")