在数组 Numpy Python 之间格式化值

如何解决在数组 Numpy Python 之间格式化值

我正在尝试编写一个函数,它检查 Numbers 元素是否在 Formating 值之间。因此,对于 Numbers 的第一个元素,3 不在 0,2 的第一个和第二个元素 Formating 之间,因此它返回 0 作为 result。对于 3,4 中的元素 Numbers2,5 之间,因此它返回那些 3,4 作为 2,5 之间的数字。 index 值不断增加,直到 Formating 数组结束。我如何修复下面的函数,以便在没有 for 循环的情况下提供预期的输出

Numbers = np.array([3,4,5,7,8,10,20])
Formating = np.array([0,2,12,15,22])

#prevIoUse and curent index values 
prevs = np.arange(0,len(Formating)-1,1)
currents = np.arange(1,len(Formating),1)
index = 0

np.where(Formating[prevs[index]] <= Numbers < Formating[currents[index]],Numbers,++index)

预期输出

Numbers between 0,2 = 0
Numbers between 2,5 = 3,4
Numbers between 5,12 = 5,10
Numbers between 12,15 = 0
Numbers between 15,22 = 20

解决方法

你可以先排序再搜索排序,这样运行效率会更高(IO除外)


Numbers = np.array([3,4,5,7,8,10,20])
Formating = np.array([0,2,12,15,22])
x = np.sort(Numbers);
l = np.searchsorted(x,Formating,side='left')

for i in range(len(l)-1):
    if l[i] >= l[i+1]:
        print('Numbers between %d,%d = _0_' % (Formating[i],Formating[i+1]))
    else:
        print('Numbers between %d,%d = %s' % (Formating[i],Formating[i+1],','.join(map(str,list(x[l[i]:l[i+1]])))))

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?