美文网首页
NumPy——入门

NumPy——入门

作者: 转身丶即天涯 | 来源:发表于2019-06-03 10:04 被阅读0次
前言:

内容来源于NumPy中文文档


NumPy是一个功能强大的python库,学习它我们可以了解更高级的数据操作和科学计算。
NumPy名字来源于两个词,Numerical和Python。提供了大量关于数值计算的函数和操作。


安装

请参照文档NumPy中文文档


数组

数组是NumPy中最常用的数据结构了,一般用于表示矩阵,常见的有一维和二维矩阵。
首先,我们创建一个矩阵。

import numpy as np

my_array = np.array([1, 2, 3, 4, 5])
print(my_array)

首先我们导入了numpy这个包,并给它取了一个别名“np”。
通过np.array()构造函数创建一个数组,参数接受了一个list。
打印结果和list(range(5))一样。
目前,array和list的表现别无二致。

当然,numpy提供了很多内置函数,供我们使用,我们依次尝试:

创建长度为5的数组,并且每个元素都是0
my_zero_array = np.zeros((5,))
print("my_zero_array:{}".format(my_zero_array))

输出是:[0. 0. 0. 0. 0.]
在zeros()函数的参数中我们传递了一个tuple,其实这个tuple使用来表示数组的形状的。
举个例子说明,比如传入(2, 3),那么代表是个二维数组,2行3列。
这里我们传入(5,),代表它是个一维数组,有5个元素。

创建长度为5的数组,并且每个元素都是1
my_ones_array = np.ones(5)

和np.zeros()函数类似。

自定义二维数组

我们可以自定义数组的内容,比如[[1, 2], [3, 4]]。

my_2d_array = np.array([[1, 2], [3, 4]])

可以看到,我们直接用嵌套list的方式来表示二维数组。

二维数组取值

numpy的array支持使用索引取值,用法和list一样。
比如二维数组[[1,2], [3, 4]],我想取第一行的第二个元素,就可以使用array[0][1]
需要注意,索引都是从0开始的。

获取数组的形状

前面我们已经知道了数组的形状是如何表示的。
numpy.array有一个属性叫shape,用来获取数组的形状,结果用tuple表示。

print("my_2d_array2的形状是:{}".format(my_2d_array2.shape))

输出:(2, 2)
表示这个数组有2行2列。

按列取值

按行取值,不必说了,直接array[i]就行。
numpy提供了一种类似切片的语法让我们可以按列取值。

my_2d_array2_column_2 = my_2d_array2[:, 1]
print("my_2d_array2的第2列的值是:{}".format(my_2d_array2_column_2))
二维矩阵的加减乘除
import numpy as np

# 二维矩阵的加减乘除
# 规则是对应位置的元素执行对应的操作(逐行逐元素操作)
a = np.array([[1.0, 2.0], [3.0, 4.0]])
b = np.array([[5.0, 6.0], [7.0, 8.0]])

sum = a + b
difference = a - b
product = a * b
quotient = a / b

print("sum:{}".format(sum))
print("difference:{}".format(difference))
print("product:{}".format(product))
print("quotient:{}".format(quotient))


# 如果要执行矩阵乘法
matrix_product = a.dot(b)
print("矩阵乘法a * b: {}".format(matrix_product))
堆叠数组
import numpy as np


a = np.floor(10 * np.random.random((2,3)))
b = np.floor(10 * np.random.random((2,3)))

print("array_a:{}".format(a))
print("array_b:{}".format(b))


# 堆叠数组
# vstack,水平堆叠。
# 把b放在a的下面,比如a和b的shape都是为2*3,堆叠后是4*3
array_vstack = np.vstack((a, b))
print("array_vstack:{}".format(array_vstack))

# hstack,垂直堆叠。
# 把b放在a的右边,比如a和b的shape都是2*3,堆叠后是2*6
array_hstack = np.hstack((a, b))
print("array_hstack:{}".format(array_hstack))
数组拆分
import numpy as np
from numpy import newaxis


a = np.floor(10 * np.random.random((2,2)))
b = np.floor(10 * np.random.random((2,2)))

print("array_a:{}".format(a))
print("array_b:{}".format(b))


array_column_stack = np.column_stack((a, b))
print("array_column_stack:{}".format(array_column_stack))


# 把一维数组拆分为每个元素一个维度
# 比如[4, 2],拆分后为[[4], [2]]
c = np.array([4, 2])
print("c newaxis:{}".format(c[:, newaxis]))


# 数组拆分
# 将一组数组拆分为若干个较小的数组
d = np.floor(10 * np.random.random((2, 12)))
print("d: {}".format(d))

# 横向拆分
d_hsplit = np.hsplit(d, (3, 4))
print("横向拆分为4份:{}".format(d_hsplit))

# 纵向拆分
d_vsplit = np.vsplit(d, 2)
print("纵向拆为2份:{}".format(d_vsplit))
更改数组的形状
import numpy as np

# 更改数组的形状
a = np.floor(10 * np.random.random((3, 4)))
print("a: {}".format(a))
print("a's shape:{}".format(a.shape))


# 修改数组
# array.ravel()
# 将多为矩阵改为一维数组,方式为从第一行起,依次拼接在后面
array_ravel = a.ravel()
print("array_ravel: {}".format(array_ravel))

# array.reshape()
# 将矩阵按照指定形状排列,比如初始3行4列,reshape后改为6行2列
# 特别说明:如果某一维度参数为-1,则自动计算此维度
array_reshape = a.reshape(6, 2)
print("array_reshape: {}".format(array_reshape))

# array.T
# 转置矩阵
array_T = a.T
print("转置矩阵a:{}".format(array_T))

相关文章

  • Numpy简易入门笔记

    来自 AI基础:Numpy简易入门手动运行了一遍实例代码,笔记待查于此处。 Numpy 简易入门 Numpy是 N...

  • numpy 学习(待更新)

    numpy 学习 标签(空格分隔): 机器学习 Numpy 入门 一、安装 pip install numpyor...

  • Numpy

    1.numpy.tile(A,B)函数,实例验证 快速入门 Numpy[https://mp.weixin.qq....

  • NumPy之 索引技巧

    系列文章 一次性搞定NumPy入门基础知识NumPy之操控ndarray的形状NumPy之浅拷贝和深拷贝NumPy...

  • Numpy语法入门(一)

    1 Numpy简易入门 1.1 认识Numpy数组对象 1.1.1 np.arange In [1]: Out[1...

  • numpy-n2

    [TOC]说明:本文是numpy入门的第二篇笔记。 numpy的智能切片 numpy提供了比原始python强大的...

  • Python编程&数据科学入门 Lesson4

    第四课 - NumPy 入门 本课内容: 0. 导入 NumPy 包 1. 创建 NumPy 数组 2. 索引和切...

  • Numpy 学习图谱

    在学习 Numpy 的时候,整理了一份 Numpy 学习图谱,希望同样可以帮助到想要入门 Numpy 的朋友。 N...

  • 【Chapter 4】 NumPy基础:数组和矢量计算

    【Chapter 4】 NumPy基础:数组和矢量计算 使用 Python 进行科学计算:NumPy入门 NumP...

  • 对 NumPy.dot() 的理解

    【对 Numpy.dot() 的理解】 我看了一下 「使用 Python 进行科学计算:NumPy入门 」 这个教...

网友评论

      本文标题:NumPy——入门

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