从numpy数组中提取数组

时间:2013-11-26 10:26:58

标签: python arrays numpy

在我开始抱歉我的英语,我可怜的python知识(新手)和可能的重复问题之前。我经常尝试和搜索,但找不到解决问题的任何方法。这是问题所在;

我有一个名为array1的数组,其中加载了numpy.loadtxt()这是一个文本文件,其中有两列数据xyx范围从0.4到15.增量不是问题。

我还有第二个数组array2,其x'个值范围从1012

注意:每个数组中x的增量是不同的。我稍后会将它们用于y值的线性插值。

我想使用第二个数组x'值范围10到12裁剪第一个数组。 我试过了;

new_array = array1[(array1>=np.amin(array2)) * (array1<= np.amax(array2))] 

裁剪第一个数组(array1)。但我只能提取x值。

[ 10.   10.1  10.2  10.3  10.4  10.5  10.6  10.7  10.8  10.9  11.   11.1
11.2  11.3  11.4  11.5  11.6  11.7  11.8  11.9  12.   12.1  12.2  12.3
12.4  12.5  12.6  12.7  12.8  12.9]

我想从x中提取yarray1的值,使其来自另一个数组的x值。

修改

array1[[  0.3     0.302   0.304   0.306   0.308   0.31    0.312   0.314   0.316
...   13.4    13.5    13.6    13.7    13.8    13.9    14.     14.1
14.2    14.3    14.4    14.5    14.6    14.7    14.8    14.9    15.   ]
[  8.82     9.       9.18     9.35     9.52     9.69     9.85    10.02
10.18    10.35    10.52    10.67    10.82    10.97    11.12    11.25
11.39    11.52 …................... 2.3044   1.7773   2.271    2.721 ]]


array2 = [[ 10.    10.02  10.03  10.04  10.05  10.06  10.07  10.08  10.09  10.1
10.12  10.13  10.14  10.15  10.16  10.17  10.18  10.19  10.2   10.21
10.22  10.23  10.24  10.25  10.26  10.27  10.28  10.29  10.3   10.31
10.33  10.34  10.35  10.36  10.37  10.38  10.39  10.4   10.41  10.42
10.43  10.44  10.45  10.46  10.47  10.48  10.49  10.5   10.51  10.52
10.53  10.54  10.59  10.64  10.7   10.75  10.8   10.85  10.9   10.95  11.
11.05  11.1   11.15 ......   12.64  12.65  12.66  12.67  12.68  12.69
12.7   12.71  12.72  12.73  12.74  12.75  12.76  12.77  12.78  12.79
12.8   12.81  12.82  12.83  12.84  12.85  12.86  12.87  12.88  12.89
12.9 ][ 0.0058  0.0073  0.0081  0.0088  0.0096  0.0104  0.0112  0.012   0.0128
0.0136  0.0165  0.0018  0.0195  0.021   0.0226  0.0241  0.0256  0.0272
0.0288  0.0334 ….  0.1092  0.0879  0.0667  0.0458  0.0433  0.0409
0.0385  0.0361  0.0337  0.0314  0.0291  0.0268  0.0245  0.0223  0.0209
0.0195  0.0182  0.0168  0.0155  0.0141  0.0128  0.0115  0.0101  0.0088
0.0085  0.0081  0.0078  0.0074  0.0071  0.0068  0.0064  0.0061  0.0058
0.0054]]

再次抱歉我的英语。我希望我成功解释自己

非常感谢您的帮助:)

1 个答案:

答案 0 :(得分:1)

假设第一个索引对应x,这可能有效:

indices = (array1[0,...] >= np.min(array2[0,...])) & (array1[0,...] <= np.max(array2[0,...]))
xselected = array1[0,indices]
yselected = array1[1,indices]

注意:请勿使用np.amin,而应使用np.min。不要将索引与*组合在一起,而是使用布尔&

我已使用array[0,...]为数组建立了索引,但我认为您也可以使用array[0],因为0会对第一维进行索引。