如何解决切片和分配
我必须编写一个函数,给定一个数组(A)和2个数字(X和Y,且X
fn main() {
let x = 3;
let mut e = Event {obs: Vec::new()};
e.subscriber(|n| {x+n;});
}
到目前为止,这是我的代码:
[1,1,9,4,2,9].
运行此命令时,将得到以下输出:
def subtract_bw_elements(A,x,y):
values_in_between = my_array[(my_array > x) & (my_array < y)] - 3
return values_in_between
my_array = np.array([1,7,5,9])
final_array = subtract_bw_elements(my_array,3,8)
print(final_array)
从本质上讲,我可以获得一个减去3的值序列。如何将该序列输入回到我的原始数组中?我相信我必须使用分配,但是我真的不知道如何。
解决方法
解决方案
您可以使用布尔过滤器选择元素,然后根据需要进行更新,例如:
A = np.array([1,4,9,7,5,9])
x = 3
y = 8
cond1 = (A > x)
cond2 = (A < y)
A[cond1 & cond2] -= 3
输出:
array([1,1,2,9])
性能
如果编写高性能代码一样容易,请执行此操作-迟早需要使用它。这是1M个元素的矢量化vs列表理解解决方案的性能示例:
def func_vectorized(A,offset=3,x=3,y=8):
cond1 = (A > x)
cond2 = (A < y)
A[cond1 & cond2] -= offset
return A
def func_comprehension(A,y=8):
values_in_between = [i - offset if x<i<y else i for i in A]
return values_in_between
# initialize array with one million elements
A = np.random.randint(0,20,1000000)
A1 = A.copy()
# compare performance of functions above using ipython `%timeit`:
%timeit func_vectorized(A)
# 911 µs ± 61.7 µs per loop (mean ± std. dev. of 7 runs,1000 loops each)
%timeit func_comprehension(A1)
# 838 µs ± 58.2 µs per loop (mean ± std. dev. of 7 runs,1000 loops each)
在我的计算机上,矢量化解决方案的速度比列表理解速度快500倍。
,您可以简单地通过使用列表理解来实现此目的,如果没有,请检查以下示例:
def subtract_bw_elements(A,x,y):
values_in_between = [i - 3 if x<i<y else i for i in A]
return values_in_between
my_array = [1,9]
final_array = subtract_bw_elements(my_array,3,8)
print(final_array)
输出是
[1,9]
,
您可以使用列表理解:
//
// ViewController.swift
// Test
//
// Created by Dennis Mostajo on 9/29/20.
//
import UIKit
class ViewController: UIViewController,UITableViewDelegate,UITableViewDataSource {
@IBOutlet var table: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
// MARK: - UITableView
func tableView(_ tableView: UITableView,heightForHeaderInSection section: Int) -> CGFloat
{
var height:CGFloat = 0
if tableView == self.table
{
height = 25
}
return height
}
func tableView(_ tableView: UITableView,heightForRowAt indexPath: IndexPath) -> CGFloat
{
var height:CGFloat = 0
if tableView == self.table
{
height = 50
}
return height
}
func numberOfSections(in tableView: UITableView) -> Int {
var sections:Int = 0
if tableView == self.table
{
sections = 4
}
return sections
}
func tableView(_ tableView: UITableView,numberOfRowsInSection section: Int) -> Int
{
var rows:Int = 0
if tableView == self.table
{
switch section
{
case 0:
rows = 3
break
case 1:
rows = 3
break
case 2:
rows = 2
break
case 3:
rows = 3
break
default:
break
}
}
return rows
}
func tableView(_ tableView: UITableView,viewForHeaderInSection section: Int) -> UIView?
{
let headerView = UIView.init(frame: CGRect.init(x: 0,y: 0,width: tableView.frame.width,height: 25))
headerView.backgroundColor = .black
if tableView == self.table
{
switch section
{
case 0: // for image only
let imageView = UIImageView.init(frame: headerView.frame)
imageView.image = UIImage(named:"flagBolivia.png")
imageView.contentMode = .scaleToFill
headerView.addSubview(imageView)
break
case 1: // for image and text
let imageView = UIImageView.init(frame: headerView.frame)
imageView.image = UIImage(named:"flagBolivia2.jpg")
imageView.contentMode = .scaleToFill
headerView.addSubview(imageView)
let label = UILabel.init(frame: headerView.frame)
label.text = "Main Cities"
label.textColor = .white
label.font = UIFont.boldSystemFont(ofSize: 16.0)
label.backgroundColor = .clear
headerView.addSubview(label)
break
case 2: // for text only
let label = UILabel.init(frame: headerView.frame)
label.text = "Showing images only"
label.textColor = .white
label.backgroundColor = .black
headerView.addSubview(label)
break
case 3: // for text only
let label = UILabel.init(frame: headerView.frame)
label.text = "Bolivian Food"
label.textColor = .white
label.backgroundColor = .black
headerView.addSubview(label)
break
default:
break
}
}
return headerView
}
func tableView(_ tableView: UITableView,cellForRowAt indexPath: IndexPath) -> UITableViewCell
{
let cell: UITableViewCell = UITableViewCell(style: UITableViewCell.CellStyle.subtitle,reuseIdentifier: "cell")
if tableView == self.table
{
switch indexPath.section
{
case 0:
switch indexPath.row
{
case 0:
cell.textLabel?.text = "CODING"
break
case 1:
cell.textLabel?.text = "FROM"
break
case 2:
cell.textLabel?.text = "BOLIVIA"
break
default:
break
}
break
case 1:
switch indexPath.row
{
case 0:
cell.textLabel?.text = "La Paz"
break
case 1:
cell.textLabel?.text = "Cochabamba"
break
case 2:
cell.textLabel?.text = "Santa Cruz"
break
default:
break
}
break
case 2:
switch indexPath.row
{
case 0: // for image only
let imageView = UIImageView.init(frame: CGRect.init(x: 0,height: 50))
imageView.image = UIImage(named:"flagBolivia.png")
imageView.contentMode = .scaleToFill
cell.contentView.addSubview(imageView)
break
case 1:
let imageView = UIImageView.init(frame: CGRect.init(x: 0,height: 50))
imageView.image = UIImage(named:"flagBolivia2.jpg")
imageView.contentMode = .scaleToFill
cell.contentView.addSubview(imageView)
let label = UILabel.init(frame: cell.frame)
label.text = "Custom Cell"
label.textColor = .white
label.font = UIFont.boldSystemFont(ofSize: 16.0)
label.backgroundColor = .clear
cell.contentView.addSubview(label)
break
default:
break
}
break
case 3:
switch indexPath.row
{
case 0:
cell.textLabel?.text = "Fricasé"
break
case 1:
cell.textLabel?.text = "Silpancho"
break
case 2:
cell.textLabel?.text = "Majadíto"
break
default:
break
}
break
default:
break
}
}
return cell
}
}
输出:import numpy as np
def subtract_bw_elements(A,y):
return [val-3 if val > x and val < y else val for val in A]
my_array = np.array([1,9])
final_array = subtract_bw_elements(my_array,8)
print(final_array)
注意:
在函数中,您正在使用变量[1,9]
,但是您已经创建了包含完全相同值的参数my_array
,请使用A
您可以使用列表理解。根据您的需要遍历MyModule.worker.js
和A
新列表:
return
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。