【发布时间】:2014-09-21 11:38:06
【问题描述】:
我有一堆矩阵eq1、eq2等,定义如下
from numpy import meshgrid, sqrt, arange
# from numpy import isnan, logical_not
xs = arange(-7.25, 7.25, 0.01)
ys = arange(-5, 5, 0.01)
x, y = meshgrid(xs, ys)
eq1 = ((x/7.0)**2.0*sqrt(abs(abs(x)-3.0)/(abs(x)-3.0))+(y/3.0)**2.0*sqrt(abs(y+3.0/7.0*sqrt(33.0))/(y+3.0/7.0*sqrt(33.0)))-1.0)
eq2 = (abs(x/2.0)-((3.0*sqrt(33.0)-7.0)/112.0)*x**2.0-3.0+sqrt(1-(abs(abs(x)-2.0)-1.0)**2.0)-y)
其中eq1、eq2、eq3 等是大型方阵。如您所见,有许多nan 元素围绕着可绘制值的“块”。我想删除所有 nan 值,同时保持矩阵中有效值块的形状。请注意,这些“块”可以位于eq1、eq2 矩阵中的任何位置。
我查看了Removing nan values from an array 和Removing NaN elements from a matrix 中给出的答案,但这些似乎与我的情况并不完全相关。
【问题讨论】:
-
“删除”是什么意思?
-
"remove" 就像取出
nan并将非nan值保留在矩阵中一样......有点像在制作时切掉所有外壳三明治。 -
sqrt(abs(abs(x)-3.0)/(abs(x)-3.0))- 你为什么要这样做? sqrt 内的数组值始终为 1、-1 或 NaN。 -
我输入您的示例代码得到的矩阵不是正方形