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


本文摘自php中文网,作者不言,侵删。

这篇文章主要介绍了关于Numpy array数据的增、删、改、查,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下

准备工作:

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

>>> 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]

1

2

3

4

5

6

7

8

9

10

11

12

13

>>> 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矩阵

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

>>> 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]])

1

2

3

4

5

6

7

8

9

10

11

12

>>> 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),第一个参数为一个布尔数组,第二个参数和第三个参数可以是标量也可以是数组。

1

2

3

4

5

6

7

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]

1

2

3

4

5

6

7

8

9

10

>>> 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矩阵

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

>>> 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]])

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

>>> 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的行数只剩一行了。

1

2

3

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

>>> a[0]

array([1, 2])

方法二:

1

2

3

4

5

6

7

8

9

10

>>> 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]赋值。

1

2

3

4

5

6

7

8

9

10

11

12

>>> 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中以文本的方式存储以及读取数据方法

以上就是Numpy array数据的增、删、改、查的详细内容,更多文章请关注木庄网络博客!!

相关阅读 >>

Python中的tuple是什么

Python对mysql数据库进行操作的实例详解

ipad能下载Python

Python二进制怎么转十进制?

Python如何赚外快

Python中zip是什么函数

Python在groupby分组后提取指定位置记录方法

Python中lambda函数的简单分析(附示例)

Python数据分析要学什么

Python实现求解括号匹配问题的方法

更多相关阅读请进入《Python》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...