处理CSV文件时numpy.append无法添加类数组元素至数组的问题
解决numpy.append无法添加元素的问题
你的代码中np.append(x,g)没有生效的核心原因是:numpy.append 不会原地修改原数组,它会返回一个包含新增元素的新数组。如果不将返回值重新赋值给原变量x,原数组不会有任何变化。
修改后的代码(修复numpy.append的问题)
import numpy as np import pandas as pd from matplotlib import pyplot as plt import os import glob path = "/Users/kagemanden/Downloads/CSV Datapunkter" csv_files = glob.glob(path + "/*.csv") x = np.array([]) for i in csv_files: print(i) df = pd.read_csv(os.path.join(path, i)) g = np.array([len(df)]) print(g) # 关键:将append的返回值重新赋值给x x = np.append(x, g) print(x) plt.bar(np.arange(len(x))+1, x) plt.show()
更高效的替代写法
numpy数组每次调用append都会重新分配内存并复制整个数组,循环中频繁使用会降低效率。更推荐先用Python列表收集数据,最后再转换为numpy数组:
import numpy as np import pandas as pd from matplotlib import pyplot as plt import os import glob path = "/Users/kagemanden/Downloads/CSV Datapunkter" csv_files = glob.glob(path + "/*.csv") x_list = [] for i in csv_files: print(i) df = pd.read_csv(os.path.join(path, i)) row_count = len(df) print(row_count) x_list.append(row_count) # 最后转换为numpy数组 x = np.array(x_list) print(x) plt.bar(np.arange(len(x))+1, x) plt.show()
内容的提问来源于stack exchange,提问作者Simon Karlsen
相关产品推荐
相关产品推荐

