猿问

为特定列python取每行的正弦

我有一个具有连续值的数据集。最后两列的值用于回归预测,我想计算这两列每一行的正弦值并将这个新数据集放入另一个文件。如何创建这个新数据集?


编辑:我尝试的代码如下。但我有错误TypeError: list indices must be integers, not tuple。我该如何解决?


import numpy as np


for i in range (1,4):

  f1=open('...'+str(i)+'.dat','r')

  f2=open('.....'+str(i)+'.dat','w')


  for line in f1:

   line=line.split(' ')

   print np.sin(line[:,-2:])

   f2.write()

  f1.close()

  f2.close()

谢谢。


犯罪嫌疑人X
浏览 210回答 1
1回答

叮当猫咪

在不知道您的数据究竟如何的情况下,我只需要自己制作一些...>>> import numpy as np>>> M = np.arange(20).reshape((4,5))array([[ 0,  1,  2,  3,  4],       [ 5,  6,  7,  8,  9],       [10, 11, 12, 13, 14],       [15, 16, 17, 18, 19]])要获取最后两列的所有行,您可以使用[:,-2:]:>>> M[:,-2:]array([[ 3,  4],       [ 8,  9],       [13, 14],       [18, 19]])然后,只需应用正弦函数numpy.sin:>>> np.sin(M[:,-2:])array([[ 0.14112001, -0.7568025 ],       [ 0.98935825,  0.41211849],       [ 0.42016704,  0.99060736],       [-0.75098725,  0.14987721]])关于您更新/新添加的代码:您得到 aTypeError因为您的line变量不是numpy数组,更不用说二维数组/矩阵,而只是一个简单的一维纯 Python 列表。您仍然可以使用np.sin该列表,但您将不得不对其进行切片,[-2:]因为它是一维的。此外,这f2.write()没有意义;您没有向文件写入任何内容,而只是将结果打印到标准输出。此外,您正在覆盖您的输入文件;不确定这是不是有意的。相反,您可能希望使用numpy.loadtxt和numpy.savetxt读取并保存整个数据集。尝试这样的事情:import numpy as npdata = np.loadtxt("input.dat", delimiter=",")result = np.sin(data[:,-2:])np.savetxt("output.dat", result, fmt="%.2f", delimiter=",")
随时随地看视频慕课网APP

相关分类

Python
我要回答