numpy基础知识归纳

作者: Chad你要加油 | 来源:发表于2019-03-25 22:39 被阅读14次

NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。

NumPy 是一个运行速度非常快的数学库,主要用于数组计算,包含:
  • 一个强大的N维数组对象 ndarray
  • 广播功能函数
  • 整合 C/C++/Fortran 代码的工具
  • 线性代数、傅里叶变换、随机数生成等功能

numpy 的属性:

  • ndim:维度
  • shape:行数和列数
  • size:元素个数

Numpy 的创建 array

  • array:创建数组
  • dtype:指定数据类型
  • zeros:创建数据全为0
  • ones:创建数据全为1
  • empty:创建数据接近0
  • arrange:按指定范围创建数据
  • linspace:创建线段
    `

创建一个数组

a = np.array([1,26,8]) # list 1d
print(a)

[1 26 8]

指定数据 dtype

a = np.array([1,26,8],dtype=np.int32)
print(a.dtype)

int32

`

Numpy 基础运算 (讲两种)

算术运算符

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

a+4
array([4, 5, 6, 7, 8])
`
最简单的就是给数组加上一个标量,然后每个都元素都加上这个标量,当然也可以减乘除。

这些运算符还可以用于两个数组的运算。在numpy中这些运算符是元素级的,即只用于位置相同的元素。


此外,这些运算符还适用于返回值为numpy数值的函数

聚合函数

聚合函数是指对一组值(比如一个数组)进行操作,返回一个单一值作为结果的函数。比如求数组所有元素之和就是聚合函数。
a
array([1, 2, 3, 4, 5])

a.sum()
15

Numpy array 合并

Python中numpy数组的合并有很多方法,如
  • np.append()
  • np.concatenate()
  • np.stack()
  • np.hstack()
  • np.vstack()
  • np.dstack()
    其中最泛用的是第一个和第二个。第一个可读性好,比较灵活,但是占内存大。第二个则没有内存占用大的问题。

Numpy array 分割

分割方法有:

  1. 水平分割
  2. 垂直分割
  3. 深度分割

水平分割

下面的代码将把数组沿着水平方向分割为3个相同大小的子数组:
b = hsplit(a,3) print(b)
得到结果为:
[array([[0], [3], [6]]), array([[1], [4], [7]]), array([[2], [5], [8]])]

垂直分割

下面的代码将把数组沿着垂直方向分割为3个相同大小的子数组:
b = vsplit(a,3) print(b)
得到结果为:
[array([[0, 1, 2]]), array([[3, 4, 5]]), array([[6, 7, 8]])]

深度分割

先创建一个三维数组:
a = arange(27).reshape(3,3,3) print(a)
调用dsplit函数按深度方向分割数组
b = dsplit(a,3) print(b)
得到结果
`
[array([[[ 0],
[ 3],
[ 6]],

   [[ 9],
    [12],
    [15]],

   [[18],
    [21],
    [24]]]),

array([[[ 1],
[ 4],
[ 7]],

   [[10],
    [13],
    [16]],

   [[19],
    [22],
    [25]]]),

array([[[ 2],
[ 5],
[ 8]],

   [[11],
    [14],
    [17]],

   [[20],
    [23],
    [26]]])]

`

Numpy copy & deep copy

简单了解
numpy关于copy有三种情况,完全不复制、视图(view)或者叫浅复制(shallow copy)和深复制(deep copy)。

添加公众号【数据蛙DataFrog】,我们一起学习交流

相关文章

网友评论

    本文标题:numpy基础知识归纳

    本文链接:https://www.haomeiwen.com/subject/feuivqtx.html