1 回答
TA贡献1776条经验 获得超12个赞
在不知道您的数据究竟如何的情况下,我只需要自己制作一些...
>>> 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 np
data = np.loadtxt("input.dat", delimiter=",")
result = np.sin(data[:,-2:])
np.savetxt("output.dat", result, fmt="%.2f", delimiter=",")
添加回答
举报