我正在尝试将一列添加到从 recfromcsv
创建的数组中。在这种情况下,它是一个数组: [210,8]
(行,列)。
我想添加第九列。为空或带零都没有关系。
from numpy import genfromtxt
from numpy import recfromcsv
import numpy as np
import time
if __name__ == '__main__':
print("testing")
my_data = recfromcsv('LIAB.ST.csv', delimiter='\t')
array_size = my_data.size
#my_data = np.append(my_data[:array_size],my_data[9:],0)
new_col = np.sum(x,1).reshape((x.shape[0],1))
np.append(x,new_col,1)
原文由 user2130951 发布,翻译遵循 CC BY-SA 4.0 许可协议
我认为你的问题是你期望
np.append
添加列,但是由于 numpy 数据的存储方式,它所做的是创建连接数组的副本所以你需要保存输出
all_data = np.append(...)
:替代方法:
我相信这三个函数(以及
np.vstack
)之间的唯一区别是它们在axis
未指定时的默认行为:concatenate
假设axis = 0
hstack
假设axis = 1
除非输入是1d,那么axis = 0
vstack
假设axis = 0
如果输入为1d,则添加轴后append
平数组根据您的评论,并更仔细地查看您的示例代码,我现在相信您可能想要做的是将 字段 添加到 记录数组 中。您同时导入了
genfromtxt
返回 结构化数组 和recfromcsv
返回略有不同的 记录数组(recarray
) You used therecfromcsv
so right nowmy_data
is actually arecarray
, which means that most likelymy_data.shape = (210,)
since recarrays are 1d arrays of records ,其中每条记录都是具有给定数据类型的元组。所以你可以试试这个: