python - Use of numpy.select when conditions and hence choices are too many
问题描述
I have just started using numpy.select()
given specific conditions and choices list.
Currently my code looks like this:
conditions = [
data['column_name'].values == mylist[0],
data['column_name'].values == mylist[1],
data['column_name'].values == mylist[2],
data['column_name'].values == mylist[3],
data['column_name'].values == mylist[4],
data['column_name'].values == mylist[5],
data['column_name'].values == mylist[6]
]
choices = [
data['column_name'].multiply(data['xyz'])*mylist[0]*Price/another_list[0],
data['column_name'].multiply(data['xyz'])*mylist[1]*Price/another_list[1],
data['column_name'].multiply(data['xyz'])*mylist[2]*Price/another_list[2],
data['column_name'].multiply(data['xyz'])*mylist[3]*Price/another_list[3],
data['column_name'].multiply(data['xyz'])*mylist[4]*Price/another_list[4],
data['column_name'].multiply(data['xyz'])*mylist[5]*Price/another_list[5],
data['column_name'].multiply(data['xyz'])*mylist[6]*Price/another_list[6]
]
outcome = np.select(conditions, choices)
What I am trying to find out, is what if I had say 30 conditions and 30 different choices? Do I have to fill conditions
and choices
lists manually? Is there any shortcut similar to the one below?
conditions = [data['column_name'].values == mylist]
choices = [data['column_name'].multiply(data['xyz'])*mylist*Price/another_list]
outcome = np.select(conditions, choices)
I hope I passed the message, looking forward to your ideas. Thank you
解决方案
No, you don't have to manually add it.
conditions = [data['column_name'].values == i for i in mylist]
choices = [data['column_name'].multiply(data['xyz'])*i*Price/j for i,j in zip(mylist,another_list)]
outcome = np.select(conditions, choices)
This will add conditions and choices automatically for all the elements. Also, if you don't want it over all the elements then can use slices like mylist[:limit] or mylist[::2](even positions) etc.
推荐阅读
- reactjs - 如何在全局错误上触发 Sentry.io ErrorBoundary 回退
- kotlin - 背压在 flatMap 和多个 observeOn 的链中不受尊重
- python - 如何将元素放在一行中的np数组中的特定位置
- css - 当字体中缺少给定的字形、字符、符号、dingbat 等时,Web 浏览器如何处理这种情况?
- python - 在某个 X 刻度值处开始水平 pyqtgraph 的 LinearRegionItem
- assembly - 错误 A2105:预期:指令或指令 - MASM
- java - 如何在android开源项目中找到特定屏幕的代码?
- javascript - 使用 Express.js 和 TypeScript 从 Node.js 下载文件
- python - 如何获取元组元组的第一项
- javascript - 慢循环查找和复制