Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 应用掩码以加速各种阵列计算_Python_Arrays_Performance_Numpy_Netcdf - Fatal编程技术网

Python 应用掩码以加速各种阵列计算

Python 应用掩码以加速各种阵列计算,python,arrays,performance,numpy,netcdf,Python,Arrays,Performance,Numpy,Netcdf,我有一个np.ndarray,数字表示感兴趣的点,我对值为1和9的点感兴趣 目前,它们正被提取出来: maskindex.append(np.where(extract.variables['mask'][0] == 1) or np.where(megadatalist[0].variables['mask'][0] == 9)) xval = maskindex[0][1] yval = maskindex[0][0] Average_List = np.mean([megadatali

我有一个
np.ndarray
,数字表示感兴趣的点,我对值为1和9的点感兴趣

目前,它们正被提取出来:

maskindex.append(np.where(extract.variables['mask'][0] == 1) or np.where(megadatalist[0].variables['mask'][0] == 9))

xval = maskindex[0][1]
yval = maskindex[0][0]
Average_List = np.mean([megadatalist[i].variables['analysed_sst'][0] for i in range(0,Numbers_of_datasets)], axis=0)
Average_Error_List = np.mean([megadatalist[i].variables['analysis_error'][0] for i in range(0,Numbers_of_datasets)], axis=0)
Std_List     = np.std([megadatalist[i].variables['analysed_sst'][0] for i in range(0,Numbers_of_datasets)], axis=0)
Maximum_List = np.maximum.reduce([megadatalist[i].variables['analysed_sst'][0] for i in range(0,Numbers_of_datasets)])
Minimum_List = np.minimum.reduce([megadatalist[i].variables['analysed_sst'][0] for i in range(0,Numbers_of_datasets)])
我需要将这些x和y值应用于我正在操作的阵列,以加快速度

我有140个数组,每个都是734 x 1468,我需要为每个字段计算平均值、最大值、最小值和标准值。我希望有一种简单的方法可以应用屏蔽阵列来加速操作,现在我只是在整个阵列上这样做:

maskindex.append(np.where(extract.variables['mask'][0] == 1) or np.where(megadatalist[0].variables['mask'][0] == 9))

xval = maskindex[0][1]
yval = maskindex[0][0]
Average_List = np.mean([megadatalist[i].variables['analysed_sst'][0] for i in range(0,Numbers_of_datasets)], axis=0)
Average_Error_List = np.mean([megadatalist[i].variables['analysis_error'][0] for i in range(0,Numbers_of_datasets)], axis=0)
Std_List     = np.std([megadatalist[i].variables['analysed_sst'][0] for i in range(0,Numbers_of_datasets)], axis=0)
Maximum_List = np.maximum.reduce([megadatalist[i].variables['analysed_sst'][0] for i in range(0,Numbers_of_datasets)])
Minimum_List = np.minimum.reduce([megadatalist[i].variables['analysed_sst'][0] for i in range(0,Numbers_of_datasets)])

任何关于如何加快速度的想法都将受到高度赞赏

我可能已经解决了部分问题,这取决于你的目标。以下代码将阵列arr减少为仅具有相关标记的1d阵列。然后,您可以在不考虑不需要的位置的情况下进行所需的计算

arr = np.array([[0,9,9,0,0,9,9,1],[9,0,1,9,0,0,0,1]])
target = [1,9] # wanted values
index = np.where(np.in1d(arr.ravel(), target).reshape(arr.shape))

no_zeros = arr[index]
在这个阶段,“您所需要的”是在“index”中给出的索引上重新插入具有适当形状的零数组上的值“no_zero”。一种方法是展平索引数组并重新计算索引,以便它们与展平的arr数组匹配。然后使用numpy.insert(np.zeroes(arr.shape)、new_索引、no_zeroes),然后再将形状重塑为适当的形状。整形在numpy中是恒定时间。诚然,我还没有找到一种快速的方法来创建新的索引数组


希望有帮助。

是的。对不起,我就是不知道该怎么办!