python如何实现数据集中每点绕某定点旋转一定角度

liftword2个月前 (02-24)技术文章15

在 Python 中,可以使用二维旋转矩阵来让文件中的数据集绕某定点旋转相同的角度。假设数据集文件中包含一系列点的坐标(如 x, y),可以按照以下步骤进行旋转:

步骤

  1. 读取 .txt 文件 并解析坐标数据(假设数据集放在一个txt文件中)。
  2. 应用旋转变换:计算相对旋转中心的坐标。使用旋转矩阵进行计算:
  1. 将变换后的数据写回 .txt 文件

示例代码:

import numpy as np

def rotate_point(x, y, xc, yc, angle):
    """绕 (xc, yc) 旋转点 (x, y) 角度 angle(角度制)"""
    theta = np.radians(angle)  # 角度转换为弧度
    cos_theta, sin_theta = np.cos(theta), np.sin(theta)
    
    # 计算旋转后的新坐标
    x_new = xc + (x - xc) * cos_theta - (y - yc) * sin_theta
    y_new = yc + (x - xc) * sin_theta + (y - yc) * cos_theta
    return x_new, y_new

def rotate_txt_file(input_file, output_file, xc, yc, angle):
    """读取 txt 文件,旋转所有点,并写入新的 txt 文件"""
    with open(input_file, 'r') as f:
        lines = f.readlines()
    
    rotated_points = []
    for line in lines:
        if line.strip():  # 确保不是空行
            x, y = map(float, line.split())  # 解析坐标
            x_new, y_new = rotate_point(x, y, xc, yc, angle)
            rotated_points.append(f"{x_new:.6f} {y_new:.6f}\n")

    with open(output_file, 'w') as f:
        f.writelines(rotated_points)

# 示例调用
rotate_txt_file("points.txt", "rotated_points.txt", xc=0, yc=0, angle=30)

说明

1.输入格式:points.txt 每行包含 x y 两个数值,如:

1.0 2.0
3.0 4.0
5.0 6.0

2.旋转中心:参数 xc, yc 设定旋转中心。

3.旋转角度:angle 以角度为单位(如 30 表示逆时针旋转 30°)。

4.输出格式:rotated_points.txt 也以相同格式存储旋转后的坐标。

扩展

  • 如果你的 .txt 文件数据格式不同(如 CSV 格式),可以使用 pandas 读取和写入。
  • 如果要可视化旋转效果,可以使用 matplotlib 画出旋转前后的点。

旋转前后的效果图如下:

相关文章

NumPy线性代数教程:轻松掌握矩阵运算

线性代数是数据科学、机器学习和工程领域的基石。而NumPy作为Python中最强大的科学计算库之一,也提供了丰富的线性代数功能,能够帮助我们高效地进行矩阵运算。今天的内容会需要一些大学线性代数基础,但...

仅用 10 行 Python 代码,搞定 10 种数学运算!

【CSDN 编者按】在如今这个 AI 飞速发展的时代,Python 以其简洁、易读的语法和强大的表现力,深受程序员和科学家的喜爱。本文将展示在仅仅 10 行代码内,Python 如何实现复杂的数学运算...

进入Python的世界27-NumPy 库的介绍及学习方法

NumPy是多个高级库的基础,掌握深度学习之前,必须先学习这个库,让咱们一起开始学习了解一下这个库,形成自己的学习与知识体系。一 NumPy 主要框架内容1. ndarray对象ndarray(N-d...

使用Python实现基于矩阵分解的长期事件(MFLEs)时间序列分析

在现代数据分析领域,时间序列数据的处理和预测一直是一个具有挑战性的问题。随着物联网设备、金融交易系统和工业传感器的普及,我们面临着越来越多的高维时间序列数据。这些数据不仅维度高,而且往往包含复杂的时间...

资深程序员教你用Python,十分钟搞定人脸识别

前言今天,我们用Python实现简单的人脸识别技术!Python里,简单的人脸识别有很多种方法可以实现,依赖于python胶水语言的特性,我们通过调用包可以快速准确的达成这一目的。这里介绍的是准确性比...

用Python学好这门数学课,秒懂AI底层逻辑

AI能有今天,线性代数功不可没当前人工智能领域如此火热,各种智能应用百花齐放。AI 能取得今日成就,其中有一门基础学科可谓功不可没,这就是线性代数。线性代数是数学的一个分支,研究向量空间和线性映射。在...