根据Python中的不等式选择数组的子集

时间:2012-11-06 17:21:23

标签: python arrays numpy

说我有以下设置:

x=np.array(range(0,100))
y=x**0.5
z=x**2

我怎样才能得到4到8之间的y的所有值,并创建一个新的数组,其中包含那些y值的行,但是对应的z值也是一行?

即。 25 in x的y值为5,介于4和8之间,我喜欢这个值,但我也喜欢下面一行中的625的z值。

数学方程只是一个例子,forumals可以是包括bessel函数在内的任何东西。

由于

1 个答案:

答案 0 :(得分:2)

>>> np.vstack((y, z))[:,(y >= 4) & (y <= 8)]
array([[  4.00000000e+00,   4.12310563e+00,   4.24264069e+00,
          4.35889894e+00,   4.47213595e+00,   4.58257569e+00,
          4.69041576e+00,   4.79583152e+00,   4.89897949e+00,
          ...
          7.81024968e+00,   7.87400787e+00,   7.93725393e+00,
          8.00000000e+00],
       [  2.56000000e+02,   2.89000000e+02,   3.24000000e+02,
          3.61000000e+02,   4.00000000e+02,   4.41000000e+02,
          ...
          3.72100000e+03,   3.84400000e+03,   3.96900000e+03,
          4.09600000e+03]])

此处,vstack()创建一个包含两行的矩阵,一行包含y,另一行包含z[...]然后删除那些不符合标准的列。