微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

切片和分配

如何解决切片和分配

我必须编写一个函数,给定一个数组(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.jsA新列表:

return

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