我正在处理一个csv文件,该文件在一列中包含图像(矢量化)。这是the csv file ~240MB。
我正在尝试将Image字符串转换为整数列表,重塑为矩阵,翻转,并将其重新整形为列表,然后最终转换回长字符串。但事情并没有达到我的预期。以下是我的代码:
import pandas as pd
import numpy as np
df = pd.read_csv('training.csv')
img = df['Image'][0] # take the first row as example
img_int = np.fromstring(img, sep=' ') # img_int.shape --> (9216,), good.
img_matrix = img_int.reshape(96,96)
img_matrix_flipped = np.fliplr(img_matrix) # img_matrix_flipped.shape --> (96,96), good
img_matrix_flipped_vector = img_matrix_flipped.reshape(1, 9216) # img_matrix_flipped_vector.shape --> (1, 9216), good
img_matrix_flipped_vector_str = str(img_matrix_flipped_vector) # len(img_matrix_flipped_vector_str) --> 44, NOT GOOD!!!
我很困惑为什么len(img_matrix_flipped_vector_str)是44.不应该字符串包含所有9216个整数吗?请帮忙!
答案 0 :(得分:1)
根据@ Dschoni的回答,我认为我不应该使用mkoctfile --mex -DMATLAB_MEX_FILE the_file.cpp
方法。然后我找到了another topic,这帮助我找到了解决方案:
str()
答案 1 :(得分:0)
我刚刚发现:
数组上的string()
方法返回可打印的字符串表示形式。如果你打印这个字符串,你会看到数字,可能会缩短中间的“......”。
要将numpy数组转换为字符串,请在数组上使用tostring()
或tobytes()
方法。
您也可能希望将重塑成一维数组而不是二维数组,其中一个轴的大小为1
(array.reshape(9216)
而不是array.reshape(1,9216)
),取决于您的目标。