使用2个数组在numpy中填充第三个数组

Srimaya Padhi

我正在尝试以某种方式在python中使用两个数组。可以说

A = np.array([5, 10, 30, 50])
B = np.array([2, 3, 4, 5])

现在我有一个目标数组C = [2, 7, 15, 25, 40]我想为(say )中具有条件的Y每个元素找到一个输出值(say Cx

  • 如果x < A[0]Y = B[0]
  • 如果A[i] < x < 2*A[i] < A[i+1]还是A[i] < x < A[i+1] < 2*A[i]那么Y=x
  • 如果A[i] < 2*A[i] < x < A[i+1]Y = B[i+1]
  • 如果x > A[end]Y = x

i 是满足条件的最大可能索引

因此,输出变为 Y = [2, 7, 15, 4, 40]

这是我目前所拥有的

A = np.array([5, 10, 30, 50])
B = np.array([2, 3, 4, 5])
C = np.array([2, 7, 15, 25, 40])

diffA = np.diff(A)

diffIdx = np.squeeze(np.where(diffA > A[0:len(A)-1]+1e-6))

Y = np.array([])

for x in C:
  idx = np.searchsorted(A, x)
  if idx == 0:
    Y = np.append(Y, B[0])
  elif np.any(diffIdx==idx-1) & (x>2*A[idx-1]+1e-6):
    Y = np.append(Y, B[idx])
  else:
    Y = np.append(Y, x)

这似乎可行,并且IPython控制台%timeit显示了所需的时间24.7 ms,但是我想知道是否有更好或更快速的方法可以做到这一点。

亚恩

检查此问题在numpy数组上映射函数的最有效方法您可以创建索引数组np.arange(C.size),做一个功能相结合的所有的逻辑ABC元素通过索引让他们并根据您的数组的大小选择应用功能的最快方法。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

PHP将2个数组合并为第三个数组

我想比较两个numpy数组并创建第三个数组

将 2 个数组的排序合并到 C 中的第三个数组中

使用第三个数组作为枢轴对三个数组进行排序

元素的总和到第三个数组

比较2个数组并在python中写入第三个的最有效方法

Python:根据第三个数组对两个数组进行排序

将两个数组 php 与第三个数组进行比较

将值从两个数组转换为新的第三个数组

在前两个数组的基础上创建第三个数组

如何添加两个数组以生成第三个数组?

从两个数组中获取正数,然后从中创建第三个

如何在第三个数组中对两个数组的值进行分组?

Java映射两个数组中的数据并将其插入第三个数组

检索和更新函数,用于在第三个数组中求和两个数组

比较两个数组,并用第三个数组中的值替换重复项

将两个不同数组的元素合并到第三个数组

我想减去 2 个数组并得到第三个数组,它由第一个数组的剩余元素组成

如何添加两个不等数组的每个元素并将其存储在第三个数组中?

基于第三个数组对多维数组进行排序

如何乘以数组值并存储在codeigniter中的第三个数组变量中

具有第三个arg的bash函数是一个数组

显示每个数组的第一个和第三个值

如何复制数组中的元素但不在第三个数组中的另一个数组中

numpy:将第三个维度上的两个数组连接起来

Java:使用第一个数组的前 3 个整数,然后使用第二个数组中的 3 个整数将 2 个数组组合成第三个数组

比较两个数组时从第三个数组打印正确的项目的问题

Ruby:将两个数组的各个值配对为第三个数组

创建两个数组,然后在用作两个微调器uipickerview的数据的第三个数组中使用它们