[英]building mask for 2d array by index
考虑以下掩码:
def maskA(n):
assert((n % 2) == 0)
sample_arr = [False, False]
bool_arr = np.random.choice(sample_arr, size=(n, n))
# print(bool_arr.shape)
for i in range(n):
for j in range(n):
if (i >= n//2) and (j < n//2):
bool_arr[i, j] = True
else:
bool_arr[i, j] = False
for i in range(n):
for j in range(n):
if (i < n//2) and (j >= n//2):
bool_arr[i, j] = True or bool_arr[i, j]
else:
bool_arr[i, j] = False or bool_arr[i, j]
return bool_arr
a.network 中簇之间的 select 个元素(2 xn/2 su.networks 或 True 元素)。
[[False False False True True True]
[False False False True True True]
[False False False True True True]
[ True True True False False False]
[ True True True False False False]
[ True True True False False False]]
有没有可能让它变得更好(更短、更干净、更快)?
您可以使用索引来分配值,而不是使用 for 循环。
import numpy as np
def maskA(n):
assert((n % 2) == 0)
bool_arr = np.full((n, n), True)
bool_arr[0:int(n/2), 0:int(n/2)] = False
bool_arr[int(n/2):n, int(n/2):n] = False
return bool_arr
print(maskA(8))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.