python - 附加到数组开头的 nil 值
问题描述
我有一个文件 foo.txt ,其中包含以下几行:
A 10 20 30
B 40 50 60
C 70 80 90
我将这些值转换为弧度并将它们转换为旋转矩阵,然后将旋转矩阵与另一个旋转矩阵相乘,并将输出存储在一个新变量中,然后再保存到一个新的文本文件中。
import transforms3d.euler as t3d
import numpy as np
import pandas as pd
# Suppress scientific notation
np.set_printoptions(suppress=True)
file="foo.txt"
r1=np.array([[1,0,0],[0,1,0],[0,0,1]])
r2=np.array([[0.5,-0.30902,-0.80902],[0.30902,-0.80902,0.5],[-0.80902,-0.5,-0.30902]])
r3=np.array([[0.5,0.30902,-0.80902],[-0.30902,-0.80902,-0.5],[-0.80902,0.5,-0.30902]])
R=np.array([r1,r2,r3])
source_array=pd.read_csv(file, sep=" ", header=None)
name_array=source_array.iloc[:,0].to_numpy()
number_array=source_array.iloc[:,1:4].to_numpy()
fullstack=np.empty((1,4))
for i in range(number_array.shape[0]):
inMat=t3d.euler2mat(np.radians(number_array[i][0]),\
np.radians(number_array[i][1]),\
np.radians(number_array[i][2]),'rzyz')
for j in range(R.shape[0]):
expMat=np.dot(inMat,R[j])
expDeg=np.degrees(t3d.mat2euler(expMat))
name=np.repeat(name_array[i],1)
nameandDeg=np.hstack((name,expDeg)).reshape(1,4)
fullstack=np.append(fullstack,nameandDeg,axis=0)
np.savetxt('foo3.txt',fullstack,fmt='%s')
预期的输出是
A 10.314104815618196 17.229396562958897 41.56670396614096
A -86.15202640927517 58.81289030540899 101.65925914885956
A 119.58912709295329 73.9812604867084 6.339258927995449
B 45.90468727333836 22.521012118111006 109.63942512488691
B -59.08770198050942 30.43292092265276 177.0466653835958
B -123.45325226252277 66.42599043668275 175.86346970407573
C 80.0 3.455054858914999e-15 160.0
C -63.59253616776351 -9.42984810562947 -140.45406233407002
C -127.56777089055139 26.411096630846163 -143.9360404337779
但是在以当前形式运行代码后,数组的开头会出现一行
**0.0** **5e-324** **1e-323** **1.5e-323**
A 10.314104815618196 17.229396562958897 41.56670396614096
A -86.15202640927517 58.81289030540899 101.65925914885956
A 119.58912709295329 73.9812604867084 6.339258927995449
B 45.90468727333836 22.521012118111006 109.63942512488691
B -59.08770198050942 30.43292092265276 177.0466653835958
B -123.45325226252277 66.42599043668275 175.86346970407573
C 80.0 3.455054858914999e-15 160.0
C -63.59253616776351 -9.42984810562947 -140.45406233407002
C -127.56777089055139 26.411096630846163 -143.9360404337779
为什么会出现这条线,我该如何摆脱它?
额外的问题,有没有办法格式化输出,以便所有包含浮点数的列都表示为 %0.3f?
提前致谢。
解决方案
np.empty((1,4))
创建一个给定形状的新数组而不初始化条目。这意味着 fullstack 数组不是空的,并且甚至在您开始nameandDeg
在循环中附加到它之前就包含值。当您写入fullstack
文件foo3.txt
时,您看到的第一行就是这些值。
推荐阅读
- css - Angular:组件样式不会级联到子组件?
- android - wifi 重新连接后,Android Paho Mqtt 不重新连接
- javascript - Angular8 - 无法迭代对象
- reactjs - 如何在 React 中添加 html
- javascript - 使用参数从 React Navigation 导航器内部调用组件函数
- php - 为什么数据库密码以纯文本形式存储在 WordPress 中的 wp-config.php 中,安全问题?
- css - 当我在 Chrome 中调整窗口大小时显示网格卡被剪切
- javascript - 将百分比相关验证添加到 html 输入框
- python - 根据数据框中的内容从 SQL Server 中删除行
- javascript - JAVASCRIPT 在用户 SCROLL DOWN 和 SCROLL TOP 时执行函数