将范围应用于数组

时间:2018-11-15 00:00:43

标签: python numpy

np.arange接受三个参数:开始,停止和步进。

我要的步骤是-0.3048。我也有用于启动和停止的单独数组。

首先,我有一整套元素:

array([5.000, 5.000, 5.000, 5.000, 5.000, 5.000, 5.000, 5.000, 5.000, 5.000, 5.000, 5.000, 5.000, 5.000, 5.000, 5.000, 5.000, 5.000, 4.377, 5.000,
       5.000, 5.000, 5.000, 5.000, 5.000, 5.000, 5.000, 5.000, 5.000, 5.000, 5.000, 5.000, 5.000, 5.000, 5.000, 5.000, 5.000, 5.000, 3.462, 3.285,
       5.000, 5.000, 4.150, 5.000, 5.000, 5.000, 5.000, 5.000, 4.118, 5.000, 5.000, 5.000, 5.000, 5.000, 5.000, 3.674, 5.000, 5.000, 5.000, 5.000,
       5.000, 5.000, 4.655, 5.000, 5.000, 5.000, 4.573, 5.000, 5.000, 4.775, 4.909, 5.000, 5.000, 5.000, 3.874, 5.000, 5.000, 3.197, 5.000, 5.000,
       5.000, 5.000, 5.000, 4.829, 5.000, 5.000, 5.000, 5.000, 5.000, 5.000, 5.000, 5.000, 5.000, 5.000, 4.372, 4.175, 5.000, 5.000, 5.000, 5.000,
       5.000, 5.000, 5.000, 5.000, 5.000, 5.000, 5.000, 4.793, 5.000, 5.000, 5.000, 5.000, 5.000, 5.000, 4.993, 5.000, 5.000, 5.000, 5.000, 5.000,
       5.000, 4.898, 5.000, 5.000, 5.000, 5.000, 5.000, 5.000, 5.000, 4.294, 5.000])

以下是相应的停止值:

array([1.927, -0.018, 0.214, 4.390, 0.162, 3.790, 4.891, -0.011, 4.623, 1.203, 4.270, 3.239, 4.569, 0.001, 3.942, 4.363, 3.135, 4.390, 3.176, 4.390,
       3.958, 3.992, 0.595, 4.458, 4.897, -0.009, -0.004, 0.004, 0.010, 4.987, 4.454, 3.167, 3.791, 4.213, 3.100, 4.312, 4.166, 3.942, 1.984, 2.077,
       4.810, 0.737, 0.490, 3.167, -0.010, 0.214, 4.313, 3.607, 2.509, 2.801, 3.034, 3.257, 0.013, 4.398, 0.013, 2.509, 4.157, 4.365, 4.902, 2.109,
       4.390, 3.176, 3.034, 4.096, 0.168, 3.205, 3.176, 1.927, 4.352, 2.509, 2.848, 4.749, 4.217, 3.017, 2.509, 4.204, 0.268, 1.662, 4.124, 0.136,
       2.509, 1.623, 4.791, 0.028, 2.969, 4.770, 4.799, 3.167, 2.970, 4.301, 0.883, 4.314, 0.182, -0.051, 2.493, 2.509, 4.131, 4.001, 4.952, 4.209,
       4.363, 4.632, 4.390, 3.172, 3.470, 0.174, 4.804, 2.247, 2.751, 4.352, 4.110, 2.969, 4.914, 2.142, 2.120, 4.936, 3.780, 3.942, 1.042, 4.229,
       2.267, 1.927, 1.213, 2.509, 4.464, 4.464, 0.595, 4.442, 2.751, 2.509, 3.339])

我需要对每个元素应用一个范围。

最快的方法是什么?我知道我可以使用for循环,但是我希望有一个numpy本机解决方案(即矢量化)。

谢谢。如果有任何不清楚的地方,请告诉我。

1 个答案:

答案 0 :(得分:0)

如果您想即时创建它们,可以使用for循环:

sed -E -i .bak "s/('\$')([nw]+)/{ bitset<9>(0b\2), \1},/g" thing.txt

变得有点幻想:

for fname in os.listdir(root_dir):
    file_path = os.path.join(root_dir, fname)
    if fname.endswith(('.csv')):
        with open(file_path,'rU') as fp:
            csv_reader = csv.reader(fp)
            df = pd.read_csv(fp)
            dfcol = df[df["colname"]].index.values.astype(int)
            df2 = df.loc[dfcol:]

我敢肯定,有一个starts = np.array([5.000, 5.000, 5.000, 5.000, 5.000, 5.000, 5.000, 5.000, 5.000, 5.000, 5.000, 5.000, 5.000, 5.000, 5.000, 5.000, 5.000, 5.000, 4.377, 5.000, 5.000, 5.000, 5.000, 5.000, 5.000, 5.000, 5.000, 5.000, 5.000, 5.000, 5.000, 5.000, 5.000, 5.000, 5.000, 5.000, 5.000, 5.000, 3.462, 3.285, 5.000, 5.000, 4.150, 5.000, 5.000, 5.000, 5.000, 5.000, 4.118, 5.000, 5.000, 5.000, 5.000, 5.000, 5.000, 3.674, 5.000, 5.000, 5.000, 5.000, 5.000, 5.000, 4.655, 5.000, 5.000, 5.000, 4.573, 5.000, 5.000, 4.775, 4.909, 5.000, 5.000, 5.000, 3.874, 5.000, 5.000, 3.197, 5.000, 5.000, 5.000, 5.000, 5.000, 4.829, 5.000, 5.000, 5.000, 5.000, 5.000, 5.000, 5.000, 5.000, 5.000, 5.000, 4.372, 4.175, 5.000, 5.000, 5.000, 5.000, 5.000, 5.000, 5.000, 5.000, 5.000, 5.000, 5.000, 4.793, 5.000, 5.000, 5.000, 5.000, 5.000, 5.000, 4.993, 5.000, 5.000, 5.000, 5.000, 5.000, 5.000, 4.898, 5.000, 5.000, 5.000, 5.000, 5.000, 5.000, 5.000, 4.294, 5.000]) stops = np.array([1.927, -0.018, 0.214, 4.390, 0.162, 3.790, 4.891, -0.011, 4.623, 1.203, 4.270, 3.239, 4.569, 0.001, 3.942, 4.363, 3.135, 4.390, 3.176, 4.390, 3.958, 3.992, 0.595, 4.458, 4.897, -0.009, -0.004, 0.004, 0.010, 4.987, 4.454, 3.167, 3.791, 4.213, 3.100, 4.312, 4.166, 3.942, 1.984, 2.077, 4.810, 0.737, 0.490, 3.167, -0.010, 0.214, 4.313, 3.607, 2.509, 2.801, 3.034, 3.257, 0.013, 4.398, 0.013, 2.509, 4.157, 4.365, 4.902, 2.109, 4.390, 3.176, 3.034, 4.096, 0.168, 3.205, 3.176, 1.927, 4.352, 2.509, 2.848, 4.749, 4.217, 3.017, 2.509, 4.204, 0.268, 1.662, 4.124, 0.136, 2.509, 1.623, 4.791, 0.028, 2.969, 4.770, 4.799, 3.167, 2.970, 4.301, 0.883, 4.314, 0.182, -0.051, 2.493, 2.509, 4.131, 4.001, 4.952, 4.209, 4.363, 4.632, 4.390, 3.172, 3.470, 0.174, 4.804, 2.247, 2.751, 4.352, 4.110, 2.969, 4.914, 2.142, 2.120, 4.936, 3.780, 3.942, 1.042, 4.229, 2.267, 1.927, 1.213, 2.509, 4.464, 4.464, 0.595, 4.442, 2.751, 2.509, 3.339]) step = -0.3048 if len(starts)!=len(stops): raise IndexError("Shape of starts does not match shape of stops") for i in range(len(starts)): myrange = np.arange(starts[i], stops[i], step) # do things -native更好的实现,但这可以使您起步