python数组

python3.7解决最小二乘遇到ValueError:Expected 2D array, got 1D array instead: array=[5.].关于reshape和predict

 ̄綄美尐妖づ 提交于 2020-02-25 12:54:31
在用python的LinearRegression做最小二乘时遇到如下错误: ValueError: Expected 2D array, got 1D array instead: array=[5.]. Reshape your data either using array.reshape(-1, 1) if your data has a single feature or array.reshape(1, -1) if it contains a single sample. 翻译过来是: ValueError:预期为2D数组,改为获取1D数组: 数组= [5.]。 如果数据具有单个功能,则使用array.reshape(-1,1)重整数据;如果包含单个样本,则使用array.reshape(1,-1)重整数据。 也就是需要使用reshape改变原始数组的形状。 下面拿一个简单例子来说明: #原来的代码 import numpy as np from matplotlib import pyplot as plt from sklearn.linear_model import LinearRegression #目的:建立x与y的最小二乘方程 x=np.array([2,5,8,8,13,15,17,19,21,24]) y=np.array([12,31,45,52

leetcode 189. 旋转数组(python)

偶尔善良 提交于 2020-02-24 05:42:08
给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。 示例 1: 输入: [1,2,3,4,5,6,7] 和 k = 3 输出: [5,6,7,1,2,3,4] 解释: 向右旋转 1 步: [7,1,2,3,4,5,6] 向右旋转 2 步: [6,7,1,2,3,4,5] 向右旋转 3 步: [5,6,7,1,2,3,4] 示例 2: 输入: [-1,-100,3,99] 和 k = 2 输出: [3,99,-1,-100] 解释: 向右旋转 1 步: [99,-1,-100,3] 向右旋转 2 步: [3,99,-1,-100] class Solution: def rotate(self, nums: List[int], k: int) -> None: """ Do not return anything, modify nums in-place instead. """ k = k%len(nums) nums[:] = nums[len(nums)-k:]+nums[:len(nums)-k] 来源: https://www.cnblogs.com/xiaotongtt/p/11305880.html

numpy 花哨的索引、排序和结构化数据

与世无争的帅哥 提交于 2020-02-24 03:58:20
花哨的索引 使用数组作为索引叫花哨的索引(Fnacy Indexing) 花哨的索引让我们快速访问复杂数组的子数据集 使用花哨的索引同样可以对子数据集进行写操作 利用花哨的索引获得的结果与索引的形状(Shape)⼀致,跟被索引的数组的形状无关。 import numpy as np # 产⽣10个随机数字 x = np . random . randint ( 100 , size = 10 ) print ( "x = " , x ) indx = [ 2 , 3 , 7 ] #用数组作为索引就是花哨的索引 a = x [ indx ] print ( "a = " , a ) # 结果的shape跟索引的shape⼀致 print ( "a.shape = " , a . shape ) x = [23 42 29 74 57 58 53 44 11 6] a = [29 74 44] a.shape = (3,) 使用⼀个2x2的数组作为索引 indx = np . array ( [ 2 , 3 , 5 , 7 ] ) . reshape ( ( 2 , 2 ) ) print ( "indx.shape = " , indx . shape ) print ( ) # 使用⼀个2x2的数组作为索引 b = x [ indx ] print ( "b = " , b )

2020.2.18

陌路散爱 提交于 2020-02-24 03:00:08
LeetCode题一 两数之和 作为数据结构课的一个作业,再来跟着老师的节奏刷一遍力扣,这次希望很多题目能自己独立地解出来,并且优化自己的算法。前期还是用java写,在后期的话就尽量用python写,为之后学机器学习尽可能多打一点基础吧。 题目:给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。 你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。 链接: 力扣 . 方法一 :暴力遍历 我的代码如下: class Solution { public int [ ] twoSum ( int [ ] nums , int target ) { for ( int i = 0 ; i < nums . length ; i ++ ) { for ( int j = i + 1 ; j < nums . length ; j ++ ) { if ( nums [ i ] + nums [ j ] == target ) { return new int [ ] { i , j } ; } } } throw new IllegalArgumentException ( "can not find" ) ; } } 这个方法还是比较容易想的,缺点就是时间复杂度太大了。 我有两次错的地方

力扣第27题(python)移除元素

淺唱寂寞╮ 提交于 2020-02-23 21:23:40
移除元素 给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度。 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。 元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。 示例 1: 给定 nums = [3,2,2,3], val = 3, 函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。 你不需要考虑数组中超出新长度后面的元素。 代码如下: class Solution : def twoSum ( self , nums : List [ int ] , target : int ) - > List [ int ] : l = len ( nums ) zidian = { } for i in range ( l ) : j = target - nums [ i ] if j in zidian : return [ zidian [ j ] , i ] zidian [ nums [ i ] ] = i 执行结果:通过 显示详情 执行用时 :56 ms, 在所有 Python3 提交中击败了81.48%的用户 内存消耗 :14.7 MB, 在所有 Python3 提交中击败了38.08%的用户 来源: CSDN 作者: 李如花 链接: https

numpy的基础运算(一)

前提是你 提交于 2020-02-23 03:57:01
Numpy:python中最基础的科学运算库,一个在Python中做科学计算的基础库,重在数值计算,多用于在大型、多维数组上执行数值运算。 numpy 数组的生成 a = np.array([[0, 1], [5, 9]]) # 列表间带逗号 print(a) b = np.arange(4) print(b) c = np.arange(4).reshape((2, 2)) print(c) 数组的运算 # *对应位置的数逐个相乘 print(a*c) # 矩阵运算的话用: d = np.dot(a,c) # 等同于 d = a.dot(c) 元素内部运算,筛选相关操作 e = np.random.random((2, 4)) print("e",e) print(np.sum(e)) #行或列当中求和 print(np.sum(e, axis=0)) # 每列求和 print(np.sum(e, axis=1)) # 每行求和 print(np.min(e)) print(np.max(e)) np.argmin(c) # c中的最大值 输出位置索引 np.argmax(c) # c中最小值 输出位置索引 np.mean(c) or c.mean() # 计算c的平均值 np.average(c) or c.average() # 与上相同 算均值 np.median(c) #

Leetcode66.加一

Deadly 提交于 2020-02-22 23:24:23
文章目录 题目描述 题解 常规思路(java) 数组数值转换(python) 题目描述 给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。 最高位数字存放在数组的首位, 数组中每个元素只存储 单个 数字。 你可以假设除了整数 0 之外,这个整数不会以零开头。 示例1: 输入: [1,2,3] 输出: [1,2,4] 解释: 输入数组表示数字 123。 示例2: 输入: [4,3,2,1] 输出: [4,3,2,2] 解释: 输入数组表示数字 4321。 题解 常规思路(java) 思路:难得读完题目就可以有一点思路,代码有点啰嗦,但还是先贴上来吧。 主要是针对两种情况:非9 和 9。对除9以外的数字加一即可;对9的情况,要考虑进位,同时要注意进位后会使得返回值需要多一位空间。 class Solution { public int [ ] plusOne ( int [ ] digits ) { int index = digits . length - 1 ; boolean isAllNine = true ; for ( ; index >= 0 ; index -- ) { if ( digits [ index ] != 9 ) { isAllNine = false ; } } if ( isAllNine ) { int [ ] ans =

1.两数之和

爷,独闯天下 提交于 2020-02-20 08:03:49
给定一个整数组nums和一个目标target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。 示例 : 给定nums = [2,7,11,15],target=9,因为nums[]+nums[]=2+7=9,所以返回[0,1] 在这里我给出我的python的方法和代码。 方法一 : 暴力破解 对于这个问题我第一想法,遍历数组得到数组的值和他的下标,分别为( i,value),然后从nums的j = i+1遍历数组,进行判断是否存在等于y = target - value的元素 def twoSum ( sums , target ) : length = len ( nums ) #获取数组的长度 for i , x in enumerate ( nums ) : #i是数组的下标,value是数组的元素 y = target - x j = x + 1 #为了避免重复,我们从第i+1项开始 while j < length : if ( nums [ j ] == y ) : return [ i , j ] #如果存在则返回对应元素的下标 j += 1 方法二 : 哈希表 暴力破解的随说简单,但时间复杂度为O(n*n),所以我们考虑用神办法能够降低时间复杂度,所以考虑用哈希表来解决问题

数据结构与算法——作业1

ぃ、小莉子 提交于 2020-02-19 07:16:02
作业: 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。 你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。 示例: 给定 nums = [2, 7, 11, 15], target = 9 因为 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1] 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/two-sum 代码: nums = [ 2 , 7 , 11 , 15 ] target = 9 输入数组和目标值 n = len ( nums ) 取数组长度 for j in range ( n ) : 迭代 for i in range ( j + 1 , n ) : 题目要求不能重复使用相同元素 if ( nums [ i ] + nums [ j ] == target ) : print ( [ i , j ] ) 判断 得到结果: C : \Users\Alicerain\AppData\Local\Programs\Python\Python37\python . exe C : / Users / Alicerain / PycharmProjects / untitled5 /

shell中的数组

隐身守侯 提交于 2020-02-15 02:15:07
1.shell数组的基本概念 同其他的变成语言一样,shell也支持数组,数组时若干数据的集合,其中每一份的数据都称为元素。 shell数组理论上没有限制数组的大小, 数组元素的下标是从0开始 获取数组的元素要使用下标[ ], 下标可以是一个整数,也可以是一个结果为整数的表达式 常用的bash shell只支持一维数组,不支持多维数组 2.shell数组的定义 在shell中,用括号()来表示数组,数组元素之间用空格来分隔 用小括号将变量值括起来赋值给数组变量 array=(1 2 3) 用小括号将变量值括起来,同时通过键值对的方式赋值给数组 a=([1]=one [2]=two [3]=three) 用赋值的方式来定义数组 a[1]=four 动态的定义数组变量,并使用命令的输出结果作为数组的内容 mkdir /array -p touch /array/{1..3}.txt c=($(ls /arry)) 3.shell数组的输出 (1) a=(1 2 3) 输出:echo $a 输出结果 1 (2)输出数组所有元素 输出:echo ${a[*]} 输出:echo ${a[@]} 输出结果:1 2 3 (3)输出数组的某个元素 echo ${a[0]} 输出数组a的第一个元素 echo ${a[1]} 输出数组a的第二个元素 (4)指定输出数组的特定元素 echo ${a[@]