我尝试将m
向量样本(带有整数条目)与m
评估一起构建。如果其条目之一是 number ,则x
对 shape向量(n,1)
进行评估。否则,它被评估为。
为了处理许多这样的向量和评估,样本向量存储在一个形状中,而评估存储在一个形状中。见代码:y=1
2
y=0
(n,m)
ndarray
(1,m)
ndarray
import numpy as np
n = 10 # number of entries in each sample vector
m = 1000 # number of samples
X = np.random.randint(-10, 10, (n, m))
Y = []
for i in range(m):
if 2 in X[:, i]:
Y.append(1)
else:
Y.append(0)
Y = np.array(Y).reshape((1,-1))
assert (Y.shape == (1,m))
如何矢量化 的计算Y
?我试图用以下内容替换 和 的初始化/X
计算Y
:
X = np.random.randint(-10,10,(n,m))
Y = np.apply_along_axis(func1d=lambda x: 1 if 2 in x else 0, axis=0, arr=X)
一些执行表明这比我的第一种方法要慢一些。(实际上,这个分析器首先说这numpy.apply_along_axis
不是为了速度。我也不知道lambda
在这种情况下有多好。)
有没有办法对 的计算进行矢量化,即根据该列是否包含元素Y
来分配一个值1
或给每一列?0
2