Skip to main content
 首页 » 编程设计

python之从 numpy 数组中提取数组

2025年05月04日6davidwang456

在我开始为我的英语、我糟糕的 Python 知识(新手)和一个可能重复的问题感到抱歉之前。我尝试并搜索了很多,但找不到任何解决我卡住的问题的方法。问题来了;

我有一个名为 array1 的数组,它使用 numpy.loadtxt() 加载,它是一个文本文件,包含 2 列数据,分别为 x 和 y 。 x 范围从 0.4 到 15。增量没有问题。

我还有第二个数组 array2,其中包含 x' 值,范围从 10 到 12。

注意: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 值从 array1 中提取 x 和 y 的值来自另一个数组。

编辑

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]] 

再次为我的英语感到抱歉。我希望我成功地解释了自己

非常感谢您的帮助:)

请您参考如下方法:

假设第一个索引对应于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。不要将索引与 * 组合在一起,而是使用 bool 值 and:&。

我已经使用 array[0,...] 对数组进行了索引,但我认为您也可以在那里使用 array[0],因为0 索引第一个维度。