numpy 相关问题

NumPy是Python编程语言的科学和数字计算扩展。


matplotlib多边形:旋转后多边形偏斜

import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D from mpl_toolkits.mplot3d.art3d import Poly3DCollection import numpy as np # Create a new figure with 3D projection fig = plt.figure() ax = fig.add_subplot(111, projection='3d') def rotate_shape_to_normal(vertices, face_indices, target_normal): """ Rotate vertices so that the face specified by face_indices becomes normal to target_normal. :param vertices: List or numpy array of 3D points defining the shape :param face_indices: Indices of the vertices that form the face to align :param target_normal: The vector to which the face should be normal :return: Rotated vertices """ vertices = np.array(vertices) # Convert to numpy array if it isn't already face_vertices = vertices[face_indices] # Calculate the normal vector of the face v1 = face_vertices[1] - face_vertices[0] v2 = face_vertices[2] - face_vertices[0] face_normal = np.cross(v1, v2) print(face_normal) ax.quiver(*face_vertices[0], *face_normal, color='r', length=2) ax.quiver(*face_vertices[0], *target_normal, color='b', length=2) face_normal = face_normal / np.linalg.norm(face_normal) # Normalize # Normalize target_normal for consistency target_normal = target_normal / np.linalg.norm(target_normal) # Compute the rotation axis (perpendicular to both vectors) rotation_axis = np.cross(face_normal, target_normal) rotation_axis = rotation_axis / np.linalg.norm(rotation_axis)# if np.linalg.norm(rotation_axis) > 0 else np.array([1, 0, 0]) # Default to x-axis if parallel print("rotation_axis", rotation_axis) # Compute the angle between the vectors cos_theta = np.dot(face_normal, target_normal) print("cos_theta", np.degrees(cos_theta)) theta = np.arccos(np.clip(cos_theta, -1.0, 1.0)) # Clip to avoid floating-point issues print("theta", np.degrees(theta)) # Check if vectors are already aligned or opposite if np.isclose(theta, 0) or np.isclose(theta, np.pi): return vertices # No rotation needed # Rodrigues' rotation formula K = np.array([ [0, -rotation_axis[2], rotation_axis[1]], [rotation_axis[2], 0, -rotation_axis[0]], [-rotation_axis[1], rotation_axis[0], 0] ]) rotation_matrix = np.sin(theta) * K + (1 - np.cos(theta)) * np.outer(rotation_axis, rotation_axis) # Apply the rotation to all vertices return np.dot(vertices, rotation_matrix.T) # Define the vertices for a simple satellite model: vertices = np.array([ # Main body (cube) (0, 0, 0), # 0 - Base, front-left (1, 0, 0), # 1 - Base, front-right (1, 1, 0), # 2 - Base, back-right (0, 1, 0), # 3 - Base, back-left (0, 0, 1), # 4 - Top, front-left (1, 0, 1), # 5 - Top, front-right (1, 1, 1), # 6 - Top, back-right (0, 1, 1), # 7 - Top, back-left # Solar panels # Left panel (0.5, .25, -1.5), # 8 (0.5, .75, -1.5), # 9 (0.5, .75, 0), # 10 (0.5, .25, 0), # 11 # Right panel (0.5, .25, 2.5), # 12 (0.5, .75, 2.5), # 13 (0.5, .75, 1), # 14 (0.5, .25, 1) # 15 ]) # Translate spacecraft to origin vertices = [(x - .5, y - .5, z - .5) for x, y, z in vertices] # Original points ax.scatter(vertices[5][0], vertices[5][1],vertices[5][2], color='green', s=25) ax.scatter(vertices[1][0], vertices[1][1],vertices[1][2], color='green', s=25) ax.scatter(vertices[4][0], vertices[4][1],vertices[4][2], color='green', s=25) # Rotate spacecraft to point at specified vector face_to_align = [5, 1, 4] # Indexes of points that define the face I want to be normal to the specified vector (-Y) #vector = np.array([0, 0, 1]) # This rotation doesn't skew anything vector = np.array([0.56167836, 0.76075023, 0.32523301]) # This rotation skews everything vertices = rotate_shape_to_normal(vertices, face_to_align, vector) # Rotated points ax.scatter(vertices[5][0], vertices[5][1],vertices[5][2], color='blue', s=25) ax.scatter(vertices[1][0], vertices[1][1],vertices[1][2], color='blue', s=25) ax.scatter(vertices[4][0], vertices[4][1],vertices[4][2], color='blue', s=25) # Faces for the cube cube_faces = [ [vertices[0], vertices[1], vertices[5], vertices[4]], # (-Y) [vertices[1], vertices[2], vertices[6], vertices[5]], # (+X) [vertices[2], vertices[3], vertices[7], vertices[6]], # (+Y) [vertices[3], vertices[0], vertices[4], vertices[7]], # (-X) [vertices[0], vertices[1], vertices[2], vertices[3]], # (-Z) [vertices[4], vertices[5], vertices[6], vertices[7]], # (+Z) ] # Solar panel faces - note these are just rectangles left_panel = [vertices[8], vertices[9], vertices[10], vertices[11]] right_panel = [vertices[12], vertices[13], vertices[14], vertices[15]] # Combine all faces faces = cube_faces + [left_panel, right_panel] # Create Poly3DCollection poly3d = Poly3DCollection(faces, alpha=0.7) poly3d.set_edgecolor('k') # Set face color for different parts poly3d.set_facecolor([[1, 0, 0], [.7, .7, .7], [.7, .7, .7], [.7, .7, .7], [.7, .7, .7], [.7, .7, .7], [0, 0.5, 1], [0, 0.5, 1]]) ax.add_collection3d(poly3d) # Set the aspect ratio to ensure it looks like a cube ax.set_box_aspect((1, 1, 1)) # Remove axes for a cleaner look #ax.set_axis_off() # Set limits to see everything ax.set_xlim(-1, 2) ax.set_ylim(-1, 2) ax.set_zlim(-1, 2) # Origin ax.scatter(0, 0, 0, color='red', s=25) ax.set_xlabel('X') ax.set_ylabel('Y') ax.set_zlabel('Z') # Adjust view for better visualization ax.view_init(elev=20., azim=-45) plt.show()

回答 1 投票 0

在下面找到两个截然不同的执行时间 导入numpy作为NP 进口时间 阵列= np.Arange(0,750000) param = 20000 t1 = time.time() 对于_范围(参数): 阵列

import numpy as np import time array = np.arange(0, 750000) param = 20000 t1 = time.time() for _ in range(param): array <= 120 print(round(time.time() - t1), _) # 9 19999 t2 = time.time() for _ in range(param): array - 120 <= 0 print(round(time.time() - t2), _) # 19 19999 <= 120 print...

回答 1 投票 0

我正在处理一个工作提交脚本,该脚本处理扭矩和slurm簇以及本地硬件上的平行模型拟合(带有Scipy.optimize)。前两个工作很好,但是后者给了我一些问题。 我的方法如下:

I将数据分为n个块,每个块对应于M RV的相等部分。假设n = 2,m = 100,所以我得到了两个带有50架RV的块。我使用CloudPickle保存块。

回答 0 投票 0

回答 1 投票 0




我使用以下代码:

用#的最终印刷和解释是荷兰语,这并不重要。当我尝试运行它时,我会收到以下错误:

回答 1 投票 0





使用numpy

可以创建一个像Python词典这样的结构,但使用其中的numpy阵列? 例如,如果我们有2个numpy.ndarray命名为键和val,我们如何使用它们来创建类

回答 1 投票 0


在numpy阵列上搜索连续的相邻零

我有一个数量的数组,看起来如下: arr = np.Array([[ - 1,-1,-1,0,-1] [-1,-1,-1,0,-1] [-1,0,-1,-1,0] [-1,0,-1,-1,--...

回答 1 投票 0

回答 6 投票 0

如何用pandas

PD.DataFrame(np.random.randint(0,253,size =(253,830)),列= list_cols) 我将其用于获取随机整数,但我需要浮点号。知道怎么样?

回答 3 投票 0


用numpy阵列pathfind 我目前正在制作Pacman游戏,并且需要发挥某种函数,该功能可以给出4个输出,以决定幽灵是否应向左或向右下降以追逐玩家 [[0 0 0 ...

[[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] [0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0] [0 2 0 0 0 1 0 0 0 1 1 0 1 0 1 0 0 0 1 0] [0 1 0 0 0 1 1 1 1 1 1 0 1 1 1 0 0 0 1 0] [0 1 0 0 0 1 0 0 0 1 1 0 0 0 1 0 0 0 1 0] [0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0] [0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0] [1 1 1 1 1 1 0 3 1 1 1 1 1 0 1 1 1 1 1 1] [0 0 0 0 0 1 0 0 0 1 1 0 0 0 1 0 0 0 0 0] [0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0] [0 1 0 0 1 0 1 0 1 0 0 0 0 1 0 1 0 0 1 0] [0 1 0 0 1 0 1 0 1 1 1 1 0 1 0 1 0 0 1 0] [0 1 0 0 1 0 1 0 0 0 0 1 0 1 0 1 0 0 1 0] [0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0] [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]]

回答 1 投票 0

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.