Numpy array数据的增、删、改、查实例


Posted in Python onJune 04, 2018

准备工作:

增、删、改、查的方法有很多很多种,这里只展示出常用的几种。

>>> import numpy as np 
>>> a = np.array([[1,2],[3,4],[5,6]])#创建3行2列二维数组。 
>>> a 
array([[1, 2], 
 [3, 4], 
 [5, 6]]) 
>>> a = np.zeros(6)#创建长度为6的,元素都是0一维数组 
>>> a = np.zeros((2,3))#创建3行2列,元素都是0的二维数组 
>>> a = np.ones((2,3))#创建3行2列,元素都是1的二维数组 
>>> a = np.empty((2,3)) #创建3行2列,未初始化的二维数组 
>>> a = np.arange(6)#创建长度为6的,元素都是0一维数组array([0, 1, 2, 3, 4, 5]) 
>>> a = np.arange(1,7,1)#结果与np.arange(6)一样。第一,二个参数意思是数值从1〜6,不包括7.第三个参数表步长为1. 
a = np.linspace(0,10,7) # 生成首位是0,末位是10,含7个数的等差数列[ 0.  1.66666667 3.33333333 5.  6.66666667 8.33333333 10. ] 
a = np.logspace(0,4,5)#用于生成首位是10**0,末位是10**4,含5个数的等比数列。[ 1.00000000e+00 1.00000000e+01 1.00000000e+02 1.00000000e+03 1.00000000e+04]

>>> a = np.array([[1,2],[3,4],[5,6]])
>>> b = np.array([[10,20],[30,40],[50,60]])
>>> np.vstack((a,b))
array([[ 1, 2],
 [ 3, 4],
 [ 5, 6],
 [10, 20],
 [30, 40],
 [50, 60]])
>>> np.hstack((a,b))
array([[ 1, 2, 10, 20],
 [ 3, 4, 30, 40],
 [ 5, 6, 50, 60]])

不同维数的数组直接相加显然是不允许的。但是可以用一个n行列向量和一个m列行向量构造出一个n×m矩阵

>>> a = np.array([[1],[2]]) 
>>> a 
array([[1], 
 [2]]) 
>>> b=([[10,20,30]])#生成一个list,注意,不是np.array。 
>>> b 
[[10, 20, 30]] 
>>> a+b 
array([[11, 21, 31], 
 [12, 22, 32]]) 
>>> c = np.array([10,20,30]) 
>>> c 
array([10, 20, 30]) 
>>> c.shape 
(3,) 
>>> a+c 
array([[11, 21, 31], 
 [12, 22, 32]])

>>> a
array([[1, 2],
 [3, 4],
 [5, 6]])
>>> a[0] # array([1, 2])
>>> a[0][1]#2
>>> a[0,1]#2
>>> b = np.arange(6)#array([0, 1, 2, 3, 4, 5])
>>> b[1:3]#右边开区间array([1, 2])
>>> b[:3]#左边默认为 0array([0, 1, 2])
>>> b[3:]#右边默认为元素个数array([3, 4, 5])
>>> b[0:4:2]#下标递增2array([0, 2])

NumPy的where函数使用

np.where(condition, x, y),第一个参数为一个布尔数组,第二个参数和第三个参数可以是标量也可以是数组。

cond = numpy.array([True,False,True,False]) 
a = numpy.where(cond,-2,2)# [-2 2 -2 2] 
cond = numpy.array([1,2,3,4]) 
a = numpy.where(cond>2,-2,2)# [ 2 2 -2 -2] 
b1 = numpy.array([-1,-2,-3,-4]) 
b2 = numpy.array([1,2,3,4]) 
a = numpy.where(cond>2,b1,b2) # 长度须匹配# [1,2,-3,-4]

>>> a = np.array([[1,2],[3,4],[5,6]]) 
>>> a[0] = [11,22]#修改第一行数组[1,2]为[11,22]。 
>>> a[0][0] = 111#修改第一个元素为111,修改后,第一个元素“1”改为“111”。 
 
>>> a = np.array([[1,2],[3,4],[5,6]]) 
>>> b = np.array([[10,20],[30,40],[50,60]]) 
>>> a+b #加法必须在两个相同大小的数组键间运算。 
array([[11, 22], 
 [33, 44], 
 [55, 66]])

不同维数的数组直接相加显然是不允许的。但是可以用一个n行列向量和一个m列行向量构造出一个n×m矩阵

>>> a = np.array([[1],[2]])
>>> a
array([[1],
 [2]])
>>> b=([[10,20,30]])#生成一个list,注意,不是np.array。
>>> b
[[10, 20, 30]]
>>> a+b
array([[11, 21, 31],
 [12, 22, 32]])
>>> c = np.array([10,20,30])
>>> c
array([10, 20, 30])
>>> c.shape
(3,)
>>> a+c
array([[11, 21, 31],
 [12, 22, 32]])

数组和一个数字的加减乘除的运算,相当于一个广播,把这个运算广播到各个元素中去。

>>> a = np.array([[1,2],[3,4],[5,6]]) 
>>> a*2#相当于a中各个元素都乘以2.类似于广播。 
array([[ 2, 4], 
 [ 6, 8], 
 [10, 12]]) 
>>> a**2 
array([[ 1, 4], 
 [ 9, 16], 
 [25, 36]]) 
>>> a>3 
array([[False, False], 
 [False, True], 
 [ True, True]]) 
>>> a+3 
array([[4, 5], 
 [6, 7], 
 [8, 9]]) 
>>> a/2 
array([[0.5, 1. ], 
 [1.5, 2. ], 
 [2.5, 3. ]])

方法一:

利用查找中的方法,比如a=a[0],操作完居后,a的行数只剩一行了。

>>> a = np.array([[1,2],[3,4],[5,6]]) 
>>> a[0] 
array([1, 2])

方法二:

>>> a = np.array([[1,2],[3,4],[5,6]]) 
>>> np.delete(a,1,axis = 0)#删除a的第二行。 
array([[1, 2], 
 [5, 6]]) 
>>> np.delete(a,(1,2),0)#删除a的第二,三行。 
array([[1, 2]]) 
>>> np.delete(a,1,axis = 1)#删除a的第二列。 
array([[1], 
 [3], 
 [5]])

方法三:

先分割,再按切片a=a[0]赋值。

>>> a = np.array([[1,2],[3,4],[5,6]]) 
>>> np.hsplit(a,2)#水平分割(搞不懂,明明是垂直分割嘛?) 
[array([[1], 
 [3], 
 [5]]), array([[2], 
 [4], 
 [6]])] 
>>> np.split(a,2,axis = 1)#与np.hsplit(a,2)效果一样。 
 
>>> np.vsplit(a,3) 
[array([[1, 2]]), array([[3, 4]]), array([[5, 6]])] 
>>> np.split(a,3,axis = 0)#与np.vsplit(a,3)效果一样。

以上这篇Numpy array数据的增、删、改、查实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python守护进程和脚本单例运行详解
Jan 06 Python
python 巧用正则寻找字符串中的特定字符的位置方法
May 02 Python
Win10环境python3.7安装dlib模块趟过的坑
Aug 01 Python
详解PyTorch手写数字识别(MNIST数据集)
Aug 16 Python
django序列化serializers过程解析
Dec 14 Python
Tensorflow 实现分批量读取数据
Jan 04 Python
flask利用flask-wtf验证上传的文件的方法
Jan 17 Python
Python Numpy 控制台完全输出ndarray的实现
Feb 19 Python
解决Jupyter Notebook开始菜单栏Anaconda下消失的问题
Apr 13 Python
Python利用matplotlib绘制散点图的新手教程
Nov 05 Python
python引入其他文件夹下的py文件具体方法
May 23 Python
python 爬取哔哩哔哩up主信息和投稿视频
Jun 07 Python
python实现判断一个字符串是否是合法IP地址的示例
Jun 04 #Python
pytorch + visdom CNN处理自建图片数据集的方法
Jun 04 #Python
python验证码识别教程之滑动验证码
Jun 04 #Python
python验证码识别教程之利用投影法、连通域法分割图片
Jun 04 #Python
python验证码识别教程之灰度处理、二值化、降噪与tesserocr识别
Jun 04 #Python
实用自动化运维Python脚本分享
Jun 04 #Python
python中验证码连通域分割的方法详解
Jun 04 #Python
You might like
如何提高MYSQL数据库的查询统计速度 select 索引应用
2007/04/11 PHP
php使用fgetcsv读取csv文件出现乱码的解决方法
2014/11/08 PHP
php数字运算验证码的实现代码
2015/07/30 PHP
PHP简单实现断点续传下载的方法
2015/09/25 PHP
PHP读取文件,解决中文乱码UTF-8的方法分析
2020/01/22 PHP
json跟xml的对比分析
2008/06/10 Javascript
为Extjs加加速(javascript加速)
2010/08/19 Javascript
Jquery中Ajax 缓存带来的影响的解决方法
2011/05/19 Javascript
转义字符(\)对JavaScript中JSON.parse的影响概述
2013/07/17 Javascript
jquery地址栏链接与a标签链接匹配之特效代码总结
2015/08/24 Javascript
在JavaScript中如何解决用execCommand(
2015/10/19 Javascript
jQuery实现textarea自动增长宽高的方法
2015/12/18 Javascript
JS实现添加,替换,删除节点元素的方法
2016/06/30 Javascript
一次$.getJSON不执行的简单记录
2016/07/19 Javascript
一种基于浏览器的自动小票机打印实现方案(js版)
2016/07/26 Javascript
jQuery的图片轮播插件PgwSlideshow使用详解
2016/08/11 Javascript
Node.js和Express简单入门介绍
2017/03/24 Javascript
关于redux-saga中take使用方法详解
2018/02/27 Javascript
详解Python中break语句的用法
2015/05/14 Python
Python3实现的字典、列表和json对象互转功能示例
2018/05/22 Python
python3利用tcp实现文件夹远程传输
2018/07/28 Python
Python使用分布式锁的代码演示示例
2018/07/30 Python
Python列表list排列组合操作示例
2018/12/18 Python
Python 实现域名解析为ip的方法
2019/02/14 Python
python numpy实现文件存取的示例代码
2019/05/26 Python
python opencv 简单阈值算法的实现
2019/08/04 Python
Python基于数列实现购物车程序过程详解
2020/06/09 Python
服装机修工岗位职责
2013/12/26 职场文书
网页美工求职信范文
2014/04/17 职场文书
学习之星事迹材料
2014/05/17 职场文书
党员评议个人总结
2014/10/20 职场文书
解除同居协议书
2015/01/29 职场文书
无故旷工检讨书
2015/08/15 职场文书
合作合同协议书
2016/03/21 职场文书
使用 CSS 轻松实现一些高频出现的奇形怪状按钮
2021/12/06 HTML / CSS
MySQL普通表如何转换成分区表
2022/05/30 MySQL