码迷,mamicode.com
首页 > 其他好文 > 详细

numpy

时间:2021-06-02 10:46:26      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:min()   ros   拼接   rgb   注意   range   list   增加   type   

一、numpy库

1.numpy简介

  • 多维数组库,创建多维数组很方便,可以替代多维列表
  • 速度比多维列表快
  • 支持向量和矩阵的各种数学运算
  • 所有元素类型必须相同

pip install numpy  安装numpy库

2.numpy创建数组的函数

函数 功能
array(x) 根据列表或元组x创建数组
arange(x,y,i) 创建一维数组,元素等价于range(x,y,i)
linspace(x,y,n) 创建一个由区间[x,y]的n-1等分点构成的一维数组,包含x和y
random.randint(...) 创建一个元素为随机整数的数组
zeros(n) 创建一个元素全为0.0的长度为n的数组
ones(n) 创建一个元素全为1.0的长度为n的数组

 

示例程序:

import numpy as np      # numpy简称为np

print(np.array([1, 2, 3]))  # [1 2 3]
print(np.arange(1, 9, 2))   # [1 3 5 7]
print(np.linspace(1, 10, 4))    # [ 1.  4.  7. 10.]
print(np.random.randint(10, 20, [2, 3]))    # [[18 13 12]
                                            # [11 17 17]]
print(np.random.randint(10, 20, 5))         # [11 19 13 11 19]
a = np.zeros(3)
print(a)                                    # [0. 0. 0.]
print(list(a))                              # [0.0, 0.0, 0.0]
a = np.zeros((2, 3), dtype=int)             # 创建一个2行3列元素都是整数0的数组
print(a)

 

3.numpy数组常用属性和函数

属性或函数 含义或功能
dtype 数组元素的类型
ndim 数组是几维的
shape 数组每一维的长度
size 数组元素的个数
argwhere(...) 查找元素
tolist 转换为list
min() 求最小元素
max() 求最大元素
reshape(...) 改变数组的形状
flatten() 转换成一维数组

示例程序:

import numpy as np


b = np.array([i for i in range(12)])
# b是[0 1 2 3 4 5 6 7 8 9 10 11]
a = b.reshape((3, 4))       # 转换成3行4列的数组,b不变
print(len(a))               # 3 a有3行
print(a.size)               # 12 a有12个元素
print(a.ndim)               # 2 a是2维数组
print(a.shape)              # (3, 4) a是3行4列
print(a.dtype)              # int32 a是32位的整数
L = a.tolist()              # 将a转换成列表,a不变
print(L)                    # [[0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11]]
b = a.flatten()             # 转换成一维数组
print(b)                    # [ 0  1  2  3  4  5  6  7  8  9 10 11]

4.numpy数组元素增删

函数 功能
append(x,y) 若y是数组、列表或元组,就将y的元素添加进数组x得新数组。否则将y本身添加进数组x得新数组
concatenate(...) 拼接多个数组
delete(...) 删除数组元素得新数组

 

numpy数组一旦生成,元素就不能增删。上面返回的是一个新的数组

实例程序:

# 添加数组元素
import numpy as np


a = np.array((1, 2, 3))     # a是[1 2 3]
b = np.append(a, 10)        # a是不会变化的
print(b)                    # [ 1  2  3 10]
print(np.append(a, [10, 20]))   # [1 2 3 10 20]
c = np.zeros((2, 3), dtype=int)     # c是2行3列的全0数组
print(np.append(a, c))          # [1 2 3 0 0 0 0 0 0]
print(np.concatenate((a, [10, 20], a)))     # [ 1  2  3 10 20  1  2  3]
print(np.concatenate((c, np.array([[10, 20, 30]]))))
# [[ 0  0  0]
# [ 0  0  0]
# [10 20 30]]
print(np.concatenate((c, np.array([[1, 2], [10, 20]])), axis=1))
# axis=0行增加   axis=1列增加
# [[ 0  0  0  1  2]
# [ 0  0  0 10 20]]
# numpy删除数组元素
import numpy as np


a = np.array((1, 2, 3, 4))
b = np.delete(a, 1)         # 删除a中下标为1的元素,a不会改变
print(b)                    # [1 3 4]
b = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]])
print(np.delete(b, 1, axis=0))  # 删除b的第1行得新数组,axis=0操作行,axis=1操作列
# [[ 1  2  3  4]
# [ 9 10 11 12]]
print(np.delete(b, 1, axis=1))  # 删除b的第1列得新数组
# [[ 1  3  4]
#  [ 5  7  8]
#  [ 9 11 12]]
print(np.delete(b, [1, 2], axis=0)) # 删除b的第1、2行得新数组
# [[1 2 3 4]]
print(np.delete(b, [1, 3], axis=1)) # 删除b得第1、2列得新数组
# [[ 1  3]
#  [ 5  7]
#  [ 9 11]]

5.numpy数组中查找元素

示例程序

import numpy as np


a = np.array((1, 2, 3, 5, 3, 4))
pos = np.argwhere(a == 3)           # pos的值为[[2] [4]]
a = np.array([[1, 2, 3], [4, 5, 2]])
print(2 in a)                       # True
pos = np.argwhere(a == 2)           # [[0 1]  [1 2]]
# print(pos)
b = a[a > 2]                        # 抽取a中大于2的元素形成一个一维数组
print(b)                            # [3 4 5]
a[a > 2] = -1                       # a变成了[[1 2 -1] [-1 -1 2]]
# print(a)

6.numpy数组的数学运算

# numpy数组的数学运算
import numpy as np

a = np.array((1, 2, 3, 4))
b = a + 1
print(b)            # [2 3 4 5]
print(a * b)        # [2 6 12 20]
print(a + b)        # [3 5 7 9]
c = np.sqrt(a * 10)     # a*10是[10 20 30 40]
print(c)                # [3.16227766 4.47213595 5.47722558 6.32455532]

7.numpy数组的切片

numpy数组的切边是“视图”,是原数组的一部分,而非一部分的拷贝

# numpy数组的切片
import numpy as np
a = np.arange(8)            # [0 1 2 3 4 5 6 7]
b = a[3:6]                  # 注意b是a的一部分
print(b)                    # [3 4 5]
c = np.copy(a[3:6])         # c是a的一部分拷贝
b[0] = 100                  # 会修改a
print(a)                    # [  0   1   2 100   4   5   6   7]
print(c)                    # [3 4 5] 不受b的影响
a = np.array([[1, 2, 3, 4],
              [5, 6, 7, 8],
              [9, 10, 11, 12],
              [13, 14, 15, 16]])
b = a[1:3, 1:4]
print(b)
# [[ 6  7  8]
#  [10 11 12]]

 

numpy

标签:min()   ros   拼接   rgb   注意   range   list   增加   type   

原文地址:https://www.cnblogs.com/lichengmin/p/14811419.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!