Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/360.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 基于另一个一维阵列成形numpy二维阵列_Python_Arrays_Numpy_Numpy Ndarray - Fatal编程技术网

Python 基于另一个一维阵列成形numpy二维阵列

Python 基于另一个一维阵列成形numpy二维阵列,python,arrays,numpy,numpy-ndarray,Python,Arrays,Numpy,Numpy Ndarray,我有(n,m)数组arr1,其中n将近250万,并且m=100。另一个arr2是(n,1)我想修改arr1,以便: arr1[i, j] = arr1[i, j], if j <= arr2[i] = nan , otherwise 在这种情况下,期望输出为: array([[147, 46, 168], [nan, nan, nan], [ 21, 245, nan], [246, nan, nan]])

我有
(n,m)
数组
arr1
,其中
n
将近250万,并且
m=100
。另一个
arr2
(n,1)

我想修改
arr1
,以便:

arr1[i, j] = arr1[i, j], if j <= arr2[i]
           = nan       , otherwise
在这种情况下,期望输出为:

array([[147,  46, 168],
       [nan, nan, nan],
       [ 21, 245, nan],
       [246, nan, nan]])
尝试速度的真实示例是

import numpy as np
arr1 = np.random.randint(500, size=(2500000, 100))
arr2 = np.random.randint(101, size=(2500000,))
在您的示例中:
arr2[:,None]在您的示例中:

arr2[:,None]那么
arr2
是一个整数数组吗?@WillemVanOnsem是的,但是
arr1
也可以是浮动的。
arr2
的随机范围不应该是100而不是100吗?否则,我们将得到一个超出范围的错误,对吗?@RolandDeschain我假设索引从1开始,而不是从0开始。但是如果假设从0开始,那么是100,而不是100101@GerryPython是基于0的索引。所以你想要100而不是101So
arr2
是一个整数数组吗?@WillemVanOnsem是的,但是
arr1
也可以是浮点数。
arr2
的随机范围不应该是100而不是100吗?否则,我们将得到一个超出范围的错误,对吗?@RolandDeschain我假设索引从1开始,而不是从0开始。但是如果假设从0开始,那么是100,而不是100101@GerryPython是基于0的索引。所以你想要100而不是101
import numpy as np
arr1 = np.random.randint(500, size=(2500000, 100))
arr2 = np.random.randint(101, size=(2500000,))
mask = arr2[:,None] <= list(range(arr1.shape[1]))
result = arr1.astype(float)
result[mask] = np.nan