python 数值计算模块,NumPy数值计算(Python)

本文介绍了NumPy库在Python中的核心作用,包括ndarray多维数组与广播机制,以及ufunc快速数学函数。通过array函数创建数组实例,探讨了不同类型数据的转换,并展示了arange、linspace、randn等函数的用法。此外,还涵盖了随机数生成和索引切片的深入讲解。
摘要由CSDN通过智能技术生成

NumPy提供两种基本对象:

ndaaray:具有矢量算数运算和复杂广播能力的、快速且节省空间的多维数组

ufunc:提供了对ndarray进行快速运算的标准数学函数

ndarray创建与索引

python内置一个array模块,基于NumPy的ndarray用于改善Python内置array模块的不足

创建ndarray对象

可以有函数array、arange、linspace、logspace、zeros、eye、diag、ones等

ndarray数据类型

以数字结尾,表示在内存占用的位数,同一个ndarray中所有元素的类型必须一致

>>>import numpy as np

>>> print(np.float64(42))

42.0

>>> print(np.int8(42.0))

42

>>> print(np.bool(42.0))

True

>>> print(np.bool(0))

False

>>> print(np.float(True))

1.0

>>> print(np.int8(False))

0

ndarray创建

array函数可以创建一维或多维ndarray

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

>>> print(arr1)

[1 2 3 4]

>>> arr2=np.array([[1,2,3,4],[5,6,7,8],[7,8,9,0]])

>>> print(arr2)

[[1 2 3 4]

[5 6 7 8]

[7 8 9 0]]

>>> print(arr2.ndim) //输出arr2的维数

1

>>> print(arr2.shape) //输出arr2的形状为三行四列

(3, 4)

>>> print(arr2.dtype) //数据类型

int32

>>> print(arr2.size) //元素个数

12

>>> print(arr2.itemsize) //每个元素的大小

4

>>>

使用array创建ndarray不方便,针对特殊ndarray,NumPy提供了其他ndarray创建函数

函数

说明

arange

等差数列(指定初值,终值和步长)

linspace

等差数列(初值,终值和元素个数)

logspace

等比数列

zeros

创建值全部为0的矩阵

eye

创建单位矩阵(对角元素为1,其余为0)

diag

创建对角矩阵(指定对角元素值)

ones

值全部为1

>>> print(np.arange(0,1,0.1))

[0. 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9]

>>> print(np.linspace(0,1,5))

[0. 0.25 0.5 0.75 1. ]

>>> print(np.logspace(1,100,3))

[1.00000000e+001 3.16227766e+050 1.00000000e+100]

>>> print(np.zeros((2,3)))

[[0. 0. 0.]

[0. 0. 0.]]

>>> print(np.eye(3))

[[1. 0. 0.]

[0. 1. 0.]

[0. 0. 1.]]

>>> print(np.diag([1,2,3,4]))

[[1 0 0 0]

[0 2 0 0]

[0 0 3 0]

[0 0 0 4]]

>>> print(np.ones((2,3)))

[[1. 1. 1.]

[1. 1. 1.]]

>>>

随机数

|numpy.random函数|说明 |

|–|--|

|seed|确定随机数生成的种子

|premutation|返回一个序列的随机排列或排列范围

|shuffle|对一个序列进行随机排列

|random|产生0~1的随机浮点数

|rand|产生指定形状的随机数ndarray

|randint|产生给定上下范围的随机整数ndarray

|randn|产生正态分布的随机数|

|binomial|产生二项分布的随机数

|normal|产生正态(高斯分布的随机数)

|beta|产生beta分布的随机数

|chisquare|产生卡方分布的随机数

|gamma|产生gamma分布随机数

|uniform|产生[0,1)中均匀分布的随机数

>>> print(np.random.random(100))

[0.63602081 0.7871554 0.56669805 0.97232689 0.0207896 0.57886676

0.64372612 0.80944545 0.75625861 0.67988537 0.75305242 0.18779097

0.22286867 0.61746534 0.86972547 0.44246135 0.00986978 0.18127593

0.65710968 0.27313108 0.72685097 0.12067366 0.41628046 0.04307971

0.24247995 0.46670822 0.58212109 0.68185902 0.31784222 0.91730552

0.86549622 0.22060213 0.99813447 0.30118742 0.72242015 0.59733132

0.39043248 0.38082654 0.03043517 0.97147862 0.82292743 0.22384881

0.7169306 0.8825181 0.89461956 0.32500068 0.45718019 0.15929286

0.65813812 0.8351554 0.06884279 0.64110422 0.41440121 0.64855575

0.07405247 0.88464219 0.06292621 0.7436007 0.62355673 0.25817082

0.64247213 0.1390323 0.52428072 0.33015445 0.48986753 0.19207131

0.52060488 0.11653308 0.32619628 0.18787004 0.42350872 0.15531873

0.4156147 0.53344594 0.85196222 0.61324832 0.30390031 0.81542646

0.74295816 0.21674356 0.29266157 0.63118271 0.42007533 0.30041424

0.6127812 0.77155011 0.53334965 0.03351164 0.52071247 0.51383995

0.95198997 0.48252852 0.75558122 0.83169528 0.17272343 0.78615273

0.26860977 0.03654327 0.06662281 0.20921301]

>>> print(np.random.rand(4,5))

[[0.59623235 0.94651761 0.48764051 0.26966806 0.23325442]

[0.25353761 0.76190705 0.97678106 0.6760325 0.74904088]

[0.32867547 0.38998648 0.40502748 0.20397448 0.70017271]

[0.90263659 0.59492567 0.13946705 0.71230637 0.62057198]]

>>> print(np.random.randn(4,5))

[[-2.50346608 -1.01591325 -1.16951676 -1.6309351 0.43556252]

[ 1.18340704 0.3305206 -1.5341233 0.55052095 0.92401355]

[ 0.66107624 0.95493295 -0.94287665 -0.02508494 0.10526318]

[-1.10079438 0.06061194 -1.53572543 1.93348636 0.22956255]]

>>> print(np.random.randint(low=2,high=10,size=[2,5]))

[[4 7 6 4 4]

[3 2 7 9 5]]

ndarray的索引与切片

一维ndarray的索引

>>> arr=np.arange(10)

>>> print(arr[5])

5

>>> print(arr[3:5]) //使用元素位置切片结果

[3 4]

>>> print(arr[:5]) //省略单个位置切片结果

[0 1 2 3 4]

>>> print(arr[:-1]) //使用元素反向位置切片结果

[0 1 2 3 4 5 6 7 8]

>>> print(arr)

[0 1 2 3 4 5 6 7 8 9]

>>> arr[2:4]=100,101

>>> print(arr)

[ 0 1 100 101 4 5 6 7 8 9]

>>> print(arr[1:-1:2]) //元素位置等差索引

[ 1 101 5 7]

>>> print(arr[5:1:-2]) //元素位置负数步长等差索引

[ 5 101]

>>>

多维ndarray的索引

每个维度一个索引,索引之间用,隔开

花式索引

ndarray的基础操作

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值