NumPy数值计算(Python)

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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值