前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Numpy 基础

Numpy 基础

作者头像
iOSDevLog
发布2019-05-24 08:43:45
9690
发布2019-05-24 08:43:45
举报
文章被收录于专栏:iOSDevLogiOSDevLog

Numpy 简介

Numpy

Numpy 库是 Python 中科学计算的核心库。它提供了高性能的多维数组对象以及用于处理这些数组的工具。

使用以下约定导入 Numpy

代码语言:javascript
复制
import numpy as np

Numpy 数组

[图片上传失败...(image-afca1c-1558626824817)]

帮助

代码语言:javascript
复制
np.info(np.ndarray.dtype)

创建数组

代码语言:javascript
复制
a = np.array([1,2,3])
b = np.array([(1.5,2,3), (4,5,6)], dtype = float)
c = np.array([[(1.5,2,3), (4,5,6)], [(3,2,1), (4,5,6)]],
dtype = float)

初始占位符

代码语言:javascript
复制
# 创建一个零数组
np.zeros((3,4))

array([[0., 0., 0., 0.], [0., 0., 0., 0.], [0., 0., 0., 0.]])

代码语言:javascript
复制
# 创建一个数组
np.ones((2,3,4), dtype=np.int16)

array([[[1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1]],

代码语言:javascript
复制
       [[1, 1, 1, 1],
        [1, 1, 1, 1],
        [1, 1, 1, 1]]], dtype=int16)
代码语言:javascript
复制
# 创建均匀间隔值的数组(步长值)
d = np.arange(10,25,5)
代码语言:javascript
复制
# 创建均匀间隔值的数组(样本数)
np.linspace(0,2,9)

array([0. , 0.25, 0.5 , 0.75, 1. , 1.25, 1.5 , 1.75, 2. ])

代码语言:javascript
复制
# 创建常量数组
e = np.full((2,2),7)
代码语言:javascript
复制
# 创建2X2单位矩阵
f = np.eye(2)
代码语言:javascript
复制
# 创建具有随机值的数组
np.random.random((2,2))

array([[0.64234353, 0.07179718], [0.7937333 , 0.13764298]])

代码语言:javascript
复制
# 创建一个空数组
np.empty((3,2))

array([[0., 0.], [0., 0.], [0., 0.]])

文件 I / O

在磁盘上保存 & 加载

代码语言:javascript
复制
np.save('my_array', a)
np.savez('array.npz', a, b)
np.load('my_array.npy')

array([1, 2, 3])

保存 & 加载文本文件

代码语言:javascript
复制
np.loadtxt("myfile.txt")
np.genfromtxt("my_file.csv", delimiter=',')
np.savetxt("myarray.txt", a, delimiter=" ")

数据类型

代码语言:javascript
复制
# 有符号的64位整数类型
np.int64

numpy.int64

代码语言:javascript
复制
# 标准双精度浮点复数
np.float32

numpy.float32

代码语言:javascript
复制
# 由128浮点数表示的布尔类型
np.complex

complex

代码语言:javascript
复制
# 存储TRUE和FALSE
np.bool

bool

代码语言:javascript
复制
# 值Python对象类型
np.object

object

代码语言:javascript
复制
# 固定长度的字符串类型
np.string_

numpy.bytes_

代码语言:javascript
复制
# 固定长度的unicode类型
np.unicode_

numpy.str_

检查数组

代码语言:javascript
复制
# 数组尺寸
a.shape

(3,)

代码语言:javascript
复制
# 数组长度
len(a)

3

代码语言:javascript
复制
# 数组维数
b.ndim

2

代码语言:javascript
复制
# 数组元素的数量
e.size

4

代码语言:javascript
复制
# 数组元素的数据类型
b.dtype

dtype('float64')

代码语言:javascript
复制
# 数据类型的名称
b.dtype.name

'float64'

代码语言:javascript
复制
# 将数组转换为其他类型
b.astype(int)

array([[1, 2, 3], [4, 5, 6]])

数学运算

算术运算

代码语言:javascript
复制
# 减法
g = a - b
g

array([[-0.5, 0. , 0. ], [-3. , -3. , -3. ]])

代码语言:javascript
复制
# 减法
np.subtract(a,b)

array([[-0.5, 0. , 0. ], [-3. , -3. , -3. ]])

代码语言:javascript
复制
# 加法
b + a

array([[2.5, 4. , 6. ], [5. , 7. , 9. ]])

代码语言:javascript
复制
# 加法
np.add(b,a)

array([[2.5, 4. , 6. ], [5. , 7. , 9. ]])

代码语言:javascript
复制
# 乘法
a * b

array([[ 1.5, 4. , 9. ], [ 4. , 10. , 18. ]])

代码语言:javascript
复制
# 除法
a / b

array([[0.66666667, 1. , 1. ], [0.25 , 0.4 , 0.5 ]])

代码语言:javascript
复制
# 幂
np.multiply(a,b)

array([[ 1.5, 4. , 9. ], [ 4. , 10. , 18. ]])

代码语言:javascript
复制
# 平方根
np.sqrt(b)

array([[1.22474487, 1.41421356, 1.73205081], [2. , 2.23606798, 2.44948974]])

代码语言:javascript
复制
# 正弦
np.sin(a)

array([0.84147098, 0.90929743, 0.14112001])

代码语言:javascript
复制
# 余弦
np.cos(b)

array([[ 0.0707372 , -0.41614684, -0.9899925 ], [-0.65364362, 0.28366219, 0.96017029]])

代码语言:javascript
复制
# 自然对数
np.log(a)

array([0. , 0.69314718, 1.09861229])

代码语言:javascript
复制
# 点积
e.dot(f)

array([[7., 7.], [7., 7.]])

比较

代码语言:javascript
复制
# 元素比较
a == b

array([[False, True, True], [False, False, False]])

代码语言:javascript
复制
# 元素比较
a < 2

array([ True, False, False])

代码语言:javascript
复制
# 数组比较
np.array_equal(a, b)

False

聚合函数

代码语言:javascript
复制
# 数组式和
a.sum()

6

代码语言:javascript
复制
# 数组最小值
a.min()

1

代码语言:javascript
复制
# 数组行的最大值
b.max(axis=0)

array([4., 5., 6.])

代码语言:javascript
复制
# 元素的累积总和
b.cumsum(axis=1)

array([[ 1.5, 3.5, 6.5], [ 4. , 9. , 15. ]])

代码语言:javascript
复制
# 均值
a.mean()

2.0

代码语言:javascript
复制
# 中位数
np.median(b)

3.5

代码语言:javascript
复制
# 相关系数
np.corrcoef(a, b)

array([[1. , 0.98198051, 1. ], [0.98198051, 1. , 0.98198051], [1. , 0.98198051, 1. ]])

代码语言:javascript
复制
# 标准差
np.std(b)

1.5920810978785667

复制数组

代码语言:javascript
复制
# 使用相同的数据创建数组视图
h = a.view()
h

array([1, 2, 3])

代码语言:javascript
复制
# 创建数组的副本
np.copy(a)

array([1, 2, 3])

代码语言:javascript
复制
# 创建数组的深层副本
h = a.copy()
h

array([1, 2, 3])

排序数组

代码语言:javascript
复制
# 对数组进行排序
a.sort()
a

array([1, 2, 3])

代码语言:javascript
复制
# 对数组轴的元素进行排序
c.sort(axis=0)
c

array([[[1.5, 2. , 1. ], [4. , 5. , 6. ]], [[3. , 2. , 3. ], [4. , 5. , 6. ]]])

切片与索引

下标

代码语言:javascript
复制
a[2]

3

代码语言:javascript
复制
b[1,2]

6.0

切片

代码语言:javascript
复制
a[:2]

array([1, 2])

代码语言:javascript
复制
b[0:2,1]

array([2., 5.])

代码语言:javascript
复制
b[:1]

array([[1.5, 2. , 3. ]])

代码语言:javascript
复制
c[1, ...]

array([[3., 2., 3.], [4., 5., 6.]])

代码语言:javascript
复制
a[ : :-1]

array([3, 2, 1])

布尔索引

代码语言:javascript
复制
a[a<2]

array([1])

代码语言:javascript
复制
# 花式索引
b[[1, 0, 1, 0],[0, 1, 2, 0]]

array([4. , 2. , 6. , 1.5])

代码语言:javascript
复制
b[[1, 0, 1, 0]][:,[0,1,2,0]]

array([[4. , 5. , 6. , 4. ], [1.5, 2. , 3. , 1.5], [4. , 5. , 6. , 4. ], [1.5, 2. , 3. , 1.5]])

数组操作

转置数组

代码语言:javascript
复制
# 重新排列数组维度
i = np.transpose(b)
代码语言:javascript
复制
# 重新排列数组维度
i.T

array([[1.5, 2. , 3. ], [4. , 5. , 6. ]])

改变形状

代码语言:javascript
复制
# 展平数组
b.ravel()

array([1.5, 2. , 3. , 4. , 5. , 6. ])

代码语言:javascript
复制
g.reshape(3, -2)

array([[-0.5, 0. ], [ 0. , -3. ], [-3. , -3. ]])

添加 / 删除元素

代码语言:javascript
复制
# 返回一个形状为新的数组(2,6)
h = np.array([1, 2, 3])
h.resize((2, 6))
代码语言:javascript
复制
# 将元素附加到数组
np.append(h, g)

array([ 1. , 2. , 3. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , -0.5, 0. , 0. , -3. , -3. , -3. ])

代码语言:javascript
复制
# 在数组中插入元素
np.insert(a, 1, 5)

array([1, 5, 2, 3])

代码语言:javascript
复制
# 从数组中删除元素
np.delete(a,[1])

array([1, 3])

结合数组

代码语言:javascript
复制
# 连接数组
np.concatenate((a,d),axis=0)

array([ 1, 2, 3, 10, 15, 20])

代码语言:javascript
复制
# 垂直堆叠数组(逐行)
np.vstack((a,b))

array([[1. , 2. , 3. ], [1.5, 2. , 3. ], [4. , 5. , 6. ]])

代码语言:javascript
复制
# 垂直堆叠数组(逐行)
np.r_[e,f]

array([[7., 7.], [7., 7.], [1., 0.], [0., 1.]])

代码语言:javascript
复制
# 水平堆叠阵列(逐列)
np.hstack((e,f))

array([[7., 7., 1., 0.], [7., 7., 0., 1.]])

代码语言:javascript
复制
# 创建堆叠的列式数组
np.column_stack((a,d))

array([[ 1, 10], [ 2, 15], [ 3, 20]])

代码语言:javascript
复制
# 创建堆叠的列式数组
np.c_[a,d]

array([[ 1, 10], [ 2, 15], [ 3, 20]])

分割数组

代码语言:javascript
复制
# 在第3个索引处水平拆分数组
np.hsplit(a,3)

[array([1]), array([2]), array([3])]

代码语言:javascript
复制
h
h.resize(2, 6)
代码语言:javascript
复制
# 在第 2 个索引处垂直拆分数组
np.vsplit(c,2)

[array([[[1.5, 2. , 1. ], [4. , 5. , 6. ]]]), array([[[3., 2., 3.], [4., 5., 6.]]])]

在线查看: https://github.com/iOSDevLog/AIDevLog/blob/master/Python%20%E5%9F%BA%E7%A1%80/NumpyBasic.ipynb

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019.05.24 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Numpy 简介
  • 帮助
  • 创建数组
    • 初始占位符
    • 文件 I / O
      • 在磁盘上保存 & 加载
        • 保存 & 加载文本文件
        • 数据类型
        • 检查数组
        • 数学运算
          • 算术运算
            • 比较
              • 聚合函数
              • 复制数组
              • 排序数组
              • 切片与索引
                • 下标
                  • 切片
                    • 布尔索引
                    • 数组操作
                      • 转置数组
                        • 改变形状
                          • 添加 / 删除元素
                            • 结合数组
                              • 分割数组
                              领券
                              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档