这听起来很简单,我想我的想法太复杂了。
我想制作一个数组,其元素是从两个形状相同的源数组生成的,具体取决于源数组中哪个元素更大。
为了显示:
import numpy as np
array1 = np.array((2,3,0))
array2 = np.array((1,5,0))
array3 = (insert magic)
>> array([2, 5, 0))
我不知道如何产生一个将array1和array2的元素组合在一起的array3,以产生一个数组,其中仅取两个array1 / array2元素值中的较大者。
任何帮助将非常感激。谢谢。
我们可以使用NumPy内置的np.maximum
,正是为此而制作的-
np.maximum(array1, array2)
另一种方式是使用NumPy的ufuncnp.max
上的2D
堆叠阵列和max- reduce
沿着第一轴线(axis=0)
-
np.max([array1,array2],axis=0)
100万个数据集上的时间-
In [271]: array1 = np.random.randint(0,9,(1000000))
In [272]: array2 = np.random.randint(0,9,(1000000))
In [274]: %timeit np.maximum(array1, array2)
1000 loops, best of 3: 1.25 ms per loop
In [275]: %timeit np.max([array1, array2],axis=0)
100 loops, best of 3: 3.31 ms per loop
# @Eric Duminil's soln1
In [276]: %timeit np.where( array1 > array2, array1, array2)
100 loops, best of 3: 5.15 ms per loop
# @Eric Duminil's soln2
In [277]: magic = lambda x,y : np.where(x > y , x, y)
In [278]: %timeit magic(array1, array2)
100 loops, best of 3: 5.13 ms per loop
扩展到其他支持的功能
同样,可以np.minimum
在两个相同或可广播形状的数组之间找到按元素的最小值。因此,要找到array1
和之间的逐元素最小值array2
,我们将有:
np.minimum(array1, array2)
有关ufuncs
支持此功能的完整列表,请参考
docs
并寻找关键字:element-wise
。Grep
对于这些,我得到了以下ufuncs:
加,减,乘,除,logaddexp,logaddexp2,true_divide,floor_divide,幂,余数,mod,fmod,divmod,heaviside,gcd,lcm,arctan2,hypot,bitwise_and,bitwise_or,bitwise_xor,left_shift,right_shift,更大,更大等于较少,less_equal,not_equal,equal,逻辑与,逻辑或,逻辑异或,最大值,最小值,fmax,fmin,copysign,nextafter,ldexp,fmod
问题内容: 使用出色的numpy广播规则,您可以从形状(5,3)数组减去一个形状(3,)数组,其中 结果是一个形状(5,3)数组,其中每一行都是差异。 有没有一种方法可以从中减去一个形状(n,3)数组,以便在不显式使用循环的情况下从整个数组中减去每一行? 问题答案: 您需要扩展with的尺寸以形成3D数组,然后通过进行减法。这将对该操作起作用,并导致输出形状为。实现看起来像这样- 相反,如果所需的
问题内容: 如何合并两个保持BST属性的二叉搜索树? 如果我们决定从一棵树中取出每个元素并将其插入到另一个元素中,则此方法的复杂度将为,其中是我们已拆分的树的节点数(例如),是的结点数。另一棵树(例如)。此操作后,只有一个具有节点。 我的问题是:我们能做得比好吗? 问题答案: 纳夫的答案还有更多细节: 将BST展平为排序列表为O(N) 它只是整个树上的“有序”迭代。 两者都做O(n1 + n2)
问题内容: 我如何结合这两个更新语句: 问题答案: 您可以使用CASE表达式,如下所示:
问题内容: 我可以在其他具有相同列名的数据框的右边追加一个数据框吗 问题答案: 您可以像这样连接两个数据框。 如果您正在寻找联盟,则可以执行以下操作。 Spark 2.0,已重命名为
问题内容: 我有以下数据集。 https://drive.google.com/drive/folders/1NRelNsXQJ7MTNKcm-T69N6r5ZsOyFmTS?usp=sharing 如果列名称与工作表名称相同,则将所有内容合并在一起作为单独的列,以下是代码 运行以上代码后的数据 merged_data 如何合并条件文件? 健康)状况。 以上代码段中的价格1指向带有名称为int 7
我有一张3D医学图像。我使用获取连接的体素组。它非常快。但我还想得到每个标签的体素数量。我使用以下代码获取每个值的编号(假设是之后的数组)。大约2分钟。 有没有什么高效的方式来高效的获取呢?