python:进行大规模检查的有效方法
我有一个数组测试,有很多行,每行有3个数字。我需要对每一行都为真,其中所有3个数字都为正,否则为假。目前我使用python:进行大规模检查的有效方法,python,numpy,Python,Numpy,我有一个数组测试,有很多行,每行有3个数字。我需要对每一行都为真,其中所有3个数字都为正,否则为假。目前我使用 check = np.all((test[:] > 0), axis=1) 测试是这样的 [[ 0.76717743 -0.14548865 0.10444938] [-0.349094 0.86043484 -0.03470421] [ 0.61281474 -0.5589774 -0.46888367] [ 0.106147 -0.15964074 -0
check = np.all((test[:] > 0), axis=1)
测试是这样的
[[ 0.76717743 -0.14548865 0.10444938]
[-0.349094 0.86043484 -0.03470421]
[ 0.61281474 -0.5589774 -0.46888367]
[ 0.106147 -0.15964074 -0.72297835]
[-0.47496423 0.53561226 -0.56997515]
[ 0.11404722 -0.19772103 -0.70308939]
[ 0.05176676 0.68243443 0.10374478]
[ 0.41054414 -0.37773413 -0.65230608]
[-0.51045939 0.81814742 -0.34113701]
[-0.30434684 0.229953 -0.6717718 ]
[ 0.12726272 -0.2157578 -0.6968093 ]
[-0.56914774 0.80530545 -0.27157462]
[-0.10736854 0.76317726 0.08648359]
[-0.30585015 0.85400552 -0.02213381]
[ 0.81378956 -0.20719654 0.04194195]
[-0.57842424 0.70255033 -0.39798076]
[ 0.56074816 -0.54319019 -0.49967448]
[ 0.72422859 -0.58427248 -0.37145212]
[ 0.86456736 -0.45311164 -0.08229539]
[ 0.86428591 -0.43964496 -0.0693436 ]
[ 0.47937801 -0.51390972 -0.53733707]
[ 0.85551894 -0.39396805 -0.01711862]
[ 0.4737934 -0.54178454 -0.50940207]
[ 0.15694062 -0.34735834 -0.61456285]]
我想加快速度。我能做什么?使用numexpr:
使用numexpr:
这里有一个选择
(test > 0).all(1)
考虑测试
时间测试
这里有一个选择
(test > 0).all(1)
考虑测试
时间测试
为什么要用test[:]复制test?@ForceBru:虽然它毫无意义,但在NumPy中它不是副本。NumPy数组切片创建了一个视图。为什么要用test[:]复制test?@ForceBru:虽然它毫无意义,但在NumPy中它不是副本。NumPy数组切片创建一个视图。谢谢,但这真的能加快它吗?我正在研究包含100000个元素的阵列。@John是的,根据我在结束时做的一些计时测试,它有很大的优势。您测试过了吗?numexpr应该能够使这一点变得更快,因为它不需要编写依赖于体系结构的SSE代码。就这么好,我做到了。一般来说没有什么不同-你能分享你的计时吗?我发布了100万行的计时。这是我的票。谢谢,但这真的能加快速度吗?我正在研究包含100000个元素的阵列。@John是的,根据我在结束时做的一些计时测试,它有很大的优势。您测试过了吗?numexpr应该能够使这一点变得更快,因为它不需要编写依赖于体系结构的SSE代码。就这么好,我做到了。一般来说没有什么不同-你能分享你的计时吗?我发布了100万行的计时。这是我的投票。
test = np.random.randn(1000000, 3)