array

数据科学:numpy.where() 的用法

痴心易碎 提交于 2020-03-20 13:21:31
原文出处: numpy.where() 用法讲解 原创作者: massquantity numpy.where() 有两种用法: 1. np.where(condition, x, y) 满足条件(condition),输出x,不满足输出y 情景(一) >>> aa = np.arange(10) >>> np.where(aa,1,-1) array([-1, 1, 1, 1, 1, 1, 1, 1, 1, 1]) # 0为False,所以第一个输出-1 >>> np.where(aa > 5,1,-1) array([-1, -1, -1, -1, -1, -1, 1, 1, 1, 1]) >>> np.where([[True,False], [True,True]], # 官网上的例子 [[1,2], [3,4]], [[9,8], [7,6]]) array([[1, 8], [3, 4]]) 情景(二) >>> a = 10 >>> np.where([[a > 5,a < 5], [a == 10,a == 7]], [["chosen","not chosen"], ["chosen","not chosen"]], [["not chosen","chosen"], ["not chosen","chosen"]]) array([['chosen',

Python-numpy.where() 用法

谁都会走 提交于 2020-03-20 13:20:49
numpy.where ( condition [, x , y ]) numpy.where() 有两种用法: 1. np.where(condition, x, y) 满足条件(condition),输出x,不满足输出y。 如果是一维数组,相当于 [xv if c else yv for (c,xv,yv) in zip(condition,x,y)] >>> aa = np.arange(10) >>> np.where(aa,1,-1) array([-1, 1, 1, 1, 1, 1, 1, 1, 1, 1]) # 0为False,所以第一个输出-1 >>> np.where(aa > 5,1,-1) array([-1, -1, -1, -1, -1, -1, 1, 1, 1, 1]) >>> np.where([[True,False], [True,True]], # 官网上的例子 [[1,2], [3,4]], [[9,8], [7,6]]) array([[1, 8], [3, 4]]) 上面这个例子的条件为 [[True,False], [True,False]] ,分别对应最后输出结果的四个值。第一个值从 [1,9] 中选,因为条件为True,所以是选1。第二个值从 [2,8] 中选,因为条件为False,所以选8,后面以此类推。类似的问题可以再看个例子:

Python中numpy的where()函数

删除回忆录丶 提交于 2020-03-20 13:19:00
第一种用法 np.where(conditions,x,y) if (condituons成立):   数组变x else:   数组变y import numpy as np ''' x = np.random.randn(4,4) print(np.where(x>0,2,-2)) #试试效果 xarr = np.array([1.1,1.2,1.3,1.4,1.5]) yarr = np.array([2.1,2.2,2.3,2.4,2.5]) zarr = np.array([True,False,True,True,False]) result = [(x if c else y) for x,y,c in zip(xarr,yarr,zarr)] print(result) #where()函数处理就相当于上面那种方案 result = np.where(zarr,xarr,yarr) print(result) ''' #发现个有趣的东西 # #处理2组数组 # #True and True = 0 # #True and False = 1 # #False and True = 2 # #False and False = 3 cond2 = np.array([True,False,True,False]) cond1 = np.array([True,True

JavaScript的9大排序算法详解

时间秒杀一切 提交于 2020-03-17 18:14:58
一.插入排序 1.算法简介 插入排序(Insertion-Sort)的算法描述是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,通常采用in-place排序(即只需用到O(1)的额外空间的排序),因而在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。 2.算法描述和实现 一般来说,插入排序都采用in-place在数组上实现。具体算法描述如下: 从第一个元素开始,该元素可以认为已经被排序; 取出下一个元素,在已经排序的元素序列中从后向前扫描; 如果该元素(已排序)大于新元素,将该元素移到下一位置; 重复步骤3,直到找到已排序的元素小于或者等于新元素的位置; 将新元素插入到该位置后; 重复步骤2~5。 JavaScript代码实现: function insertionSort(array) { if (Object.prototype.toString.call(array).slice(8, -1) === ‘Array’) { for (var i = 1; i < array.length; i++) { var key = array[i]; var j = i – 1; while (j >= 0 && array[j] > key) { array[j

排序算法--选择排序(Selection Sort)_C#程序实现

家住魔仙堡 提交于 2020-03-17 17:37:26
排序算法--选择排序(Selection Sort)_C#程序实现   排序(Sort)是计算机程序设计中的一种重要操作,也是日常生活中经常遇到的问题。例如,字典中的单词是以字母的顺序排列,否则,使用起来非常困难。同样,存储在计算机中的数据的次序,对于处理这些数据的算法的速度和简便性而言,也具有非常深远的意义。 1.基本概念   排序是把一个记录(在排序中把数据元素称为记录)集合或序列重新排列成按记录的某个数据项值递增(或递减)的序列。 2选择排序(Selection Sort)   选择排序(Selection-sort)是一种简单直观的排序算法。它的工作原理:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。 2.1算法描述 n个记录的直接选择排序可经过n-1趟直接选择排序得到有序结果。具体算法描述如下: 初始状态:无序区为R[1..n],有序区为空; 第i趟排序(i=1,2,3…n-1)开始时,当前有序区和无序区分别为R[1..i-1]和R(i..n)。该趟排序从当前无序区中-选出关键字最小的记录 R[k],将它与无序区的第1个记录R交换,使R[1..i]和R[i+1..n)分别变为记录个数增加1个的新有序区和记录个数减少1个的新无序区; n-1趟结束

排序算法之选择排序

随声附和 提交于 2020-03-17 17:28:00
基本思想: 在长度为N的无序数组中,第一次遍历n-1个数,找到最小的数值与第一个元素交换; 第二次遍历n-2个数,找到最小的数值与第二个元素交换; 。。。 第n-1次遍历,找到最小的数值与第n-1个元素交换,排序完成。 平均时间复杂度: O(n2) 过程: 代码: public int[] selectSort(int[] array){ for(int i = 0;i < array.length - 1;i++){ int minindex = i; for(int j = i + 1; j < array.length;j++){ if(array[j] < array[minindex]){ minindex = j; } } if(minindex != i){ array[i] = array[i] ^ array[minindex]; array[minindex] = array[i] ^ array[minindex]; array[i] = array[i] ^ array[minindex]; } } return array; }   总结: 时间复杂度 : 选择排序的交换操作介于 0 和 (n - 1) 次之间。选择排序的比较操作为 n (n - 1) / 2 次之间,比较次数O(n^2),比较次数与关键字的初始状态无关,总的比较次数N=(n-1)+(n

[CodeForces] 1325D Ehab the Xorcist

我是研究僧i 提交于 2020-03-17 07:51:38
Given 2 integers u and v, find the shortest array such that bitwise-xor of its elements is u , and the sum of its elements is v . Input The only line contains 2 integers u and v ( 0 ≤ 𝑢 , 𝑣 ≤ 10^ 18 ) . Output If there's no array that satisfies the condition, print "-1". Otherwise: The first line should contain one integer, n, representing the length of the desired array. The next line should contain n positive integers, the array itself. If there are multiple possible answers, print any. First, let's consider a few special cases. Xor is basically bitwise-add ignoring carries. This means if

把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。

你离开我真会死。 提交于 2020-03-17 04:09:12
题目描述:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。 方法一:考虑用递归实现 分析:array[mid]>array[left]时,最小数必定在mid的右侧 array[mid]>array[left]时,最小数必定在mid的左侧 array[mid]=array[left]时,最小数不能确定在左还是在右(比如:{3,4,2,3,3,3,3}和{3,3,3,3,4,2,3,3),采取的策略是直接将left向右移动一位 import java.util.Arrays; public class Solution { public int minNumberInRotateArray(int [] array) { //二分查找 int left=0; int right=array.length-1; int mid=(left+right)/2; if(array.length==2) { return array[0]<array[1]?array[0]:array[1]; } if(array.length==1) { return array

通用函数:快速的元素级数组函数

馋奶兔 提交于 2020-03-17 03:04:23
  通用函数(及ufunc)是一种对ndarray中的数据执行元素级运算的函数。你可以将其看作简单函数(接受一个或多个标量值,并产生一个或多个标量值)的矢量化包装器。    https://zhuanlan.zhihu.com/p/33468084   abs,fabs   sqrt   square   exp   log,log10,log2,log1p   sign   ceil   floor   rint   modf   isnan   isfinite,isinf   cos,cosh,sin,sinh   tan,tanh   arccos,arccosh,arcsin,aarcsinh,arctan,arctanh   logical_not      add   subtract   multiply   divide,floor_divide   power   maximun,fmax   minimun,fmin   mod   copysign   greater,greater_equal,less,less_equal,equal,not_equal   logical_and,logical_or,logical_xor    举例如下   meshgrid   meshgrid的作用适用于生成网格型数据,可以接受两个一维数组生成两个二维矩阵

Numpy数组的基本运算操作

淺唱寂寞╮ 提交于 2020-03-17 00:23:10
一、算术运算符 In [3]: a = np.arange(0,5) Out[3]array([0, 1, 2, 3, 4]) In [4]: a+4 Out[4]: array([4, 5, 6, 7, 8]) 最简单的就是给数组加上一个标量,然后每个都元素都加上这个标量,当然也可以减乘除。 这些运算符还可以用于两个数组的运算。在numpy中这些运算符是元素级的,即只用于位置相同的元素。 此外,这些运算符还适用于返回值为numpy数值的函数。 二、自增自减运算符 因为python中是没有--或者++的,因此对变量进行自增自减需要使用+=或-=运算符。这两个运算符与前面的加减乘除有一点不同,运算的结果不是赋值给一个新数组,而是 修改实际数据 。 In [6]: a Out[6]: array([0, 1, 2, 3, 4]) In [7]: a += 1 In [8]: a Out[8]: array([1, 2, 3, 4, 5]) 三、通用函数(universal function) Numpy实现了很多通用函数,像计算平方根sqrt()、取对数log()、求正弦sin()函数都是通用函数, 它是对数组中的每一个元素逐一进行操作的。 In [9]: a = np.arange(1,6) Out[9]: array([1, 2, 3, 4, 5]) In [10]: np