首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我有一些关于python中的值错误的问题。

我有一些关于python中的值错误的问题。
EN

Stack Overflow用户
提问于 2020-10-05 04:30:20
回答 1查看 60关注 0票数 0

下面是我绘制应力-应变曲线的代码

代码语言:javascript
复制
import matplotlib.pyplot as plt
import numpy as np
import math
from scipy.interpolate import interp1d
from matplotlib.offsetbox import AnchoredText
import pandas as pd


#both strain is a column in the given dataframe, and I manually calculated stress
df_1 = pd.read_csv('1045.csv',skiprows=25,header=[0,1])
print(df_1.head())

A1 = 40.602*(10e-6)
stress1 = ((df_1.Load)/A1)


plt.figure(figsize=(12,9))
plt.plot(df_1.Strain1.values,df_1.Load.values,'g')
plt.ylabel('stress(Pa)',fontsize=13)
plt.xlabel('Strain(%)',fontsize=13)
plt.xticks(np.arange(-6e-5,0.15,step=0.005),rotation = 45)
plt.yticks(np.arange(0,42000,step=1000))

strain = df_1.Strain1.values
stress = np.array(((df_1.Load.values)/A1))
strain = np.array((df_1.Strain1.values))

LinearLimit=1
Strain_values_linear = np.linspace(strain[0], strain[LinearLimit], num=50, endpoint=True)
Strain_values_eng = np.linspace(strain[LinearLimit], strain[-1], num=50, endpoint=True)
f1 = interp1d(strain, stress, fill_value='extrapolate')
f2 = interp1d(strain, stress, kind=3, fill_value='extrapolate')

现在,我一直收到一个值错误:"x和y数组沿插值轴的长度必须相等。“我不明白……我打印了应变和应力的形状,它们是一样的。这里是csv文件的截图:enter image description here

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-06 16:36:17

您可能会传递一个形状数组(..., N)作为第一个参数(这意味着strain具有(..., N)形式的形状)。SciPy不允许这样做,并抛出一个ValueError。有关详细信息,请参阅documentation。如果strain数组中有多个向量,则应该运行for循环。考虑到您想要为strain中的每一行插入一个函数(该应变是一个二维数组),下面的代码应该可以工作。如果不是,您可以使用strain.reshape(-1, N)很容易地转换它):

代码语言:javascript
复制
import matplotlib.pyplot as plt
import numpy as np
import math
from scipy.interpolate import interp1d
from matplotlib.offsetbox import AnchoredText
import pandas as pd


#both strain is a column in the given dataframe, and I manually calculated stress
df_1 = pd.read_csv('1045.csv',skiprows=25,header=[0,1])
print(df_1.head())

A1 = 40.602*(10e-6)
stress1 = ((df_1.Load)/A1)


plt.figure(figsize=(12,9))
plt.plot(df_1.Strain1.values,df_1.Load.values,'g')
plt.ylabel('stress(Pa)',fontsize=13)
plt.xlabel('Strain(%)',fontsize=13)
plt.xticks(np.arange(-6e-5,0.15,step=0.005),rotation = 45)
plt.yticks(np.arange(0,42000,step=1000))

strain = df_1.Strain1.values
stress = np.array(((df_1.Load.values)/A1))
strain = np.array((df_1.Strain1.values))

LinearLimit=1
Strain_values_linear = np.linspace(strain[0], strain[LinearLimit], num=50, endpoint=True)
Strain_values_eng = np.linspace(strain[LinearLimit], strain[-1], num=50, endpoint=True)

f1, f2 = [], []
for row in range(len(strain)):
    f1.append(interp1d(strain[row], stress, fill_value='extrapolate'))
    f2.append(interp1d(strain[row], stress, kind=3, fill_value='extrapolate'))

编辑:从注释中可以看到形状为(222, 1)strain数组。这意味着您已经有了一个向量,但该形状与SciPy接受的内容不兼容。在这种情况下,您必须重塑应变和应力数组,使其具有表单(N,)的形状。下面的代码应该可以工作:

代码语言:javascript
复制
import matplotlib.pyplot as plt
import numpy as np
import math
from scipy.interpolate import interp1d
from matplotlib.offsetbox import AnchoredText
import pandas as pd


#both strain is a column in the given dataframe, and I manually calculated stress
df_1 = pd.read_csv('1045.csv',skiprows=25,header=[0,1])
print(df_1.head())

A1 = 40.602*(10e-6)
stress1 = ((df_1.Load)/A1)


plt.figure(figsize=(12,9))
plt.plot(df_1.Strain1.values,df_1.Load.values,'g')
plt.ylabel('stress(Pa)',fontsize=13)
plt.xlabel('Strain(%)',fontsize=13)
plt.xticks(np.arange(-6e-5,0.15,step=0.005),rotation = 45)
plt.yticks(np.arange(0,42000,step=1000))

strain = df_1.Strain1.values
stress = np.array(((df_1.Load.values)/A1))
strain = np.array((df_1.Strain1.values))
strain = strain.reshape(-1,)
stress = stress.reshape(-1,)

LinearLimit=1
Strain_values_linear = np.linspace(strain[0], strain[LinearLimit], num=50, endpoint=True)
Strain_values_eng = np.linspace(strain[LinearLimit], strain[-1], num=50, endpoint=True)
f1 = interp1d(strain, stress, fill_value='extrapolate')
f2 = interp1d(strain, stress, kind=3, fill_value='extrapolate')
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64199590

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档