ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

numpy

2022-08-17 19:01:34  阅读:175  来源: 互联网

标签:10 numpy np quad array True 100


暑假的小存货~

numpy库

numpy库最重要的对象是新定义n维数组 \(ndarray\)

创建

\(numpy.array()\)

import numpy as np
a = np.array([1,2,3])
type(a) #<class 'numpy.ndarray'>

\(np.zeros((n,m))\)

np.zeros((2,3))
array([[0., 0., 0.],
       [0., 0., 0.]])

\(np.ones((n,m))\)

np.zeros((2,3))
array([[0., 0., 0.],
       [0., 0., 0.]])

\(np.arange(n)\)

np.arange(6)
array([0, 1, 2, 3, 4, 5])

np.arange(0,10,2)
array([0, 2, 4, 6, 8])

\(np.linspace()\)

np.linspace(1,12,12)
array([ 1.,  2.,  3.,  4.,  5.,  6.,  7.,  8.,  9., 10., 11., 12.])

np.linspace(0,1,10)
array([0.        , 0.11111111, 0.22222222, 0.33333333, 0.44444444,
       0.55555556, 0.66666667, 0.77777778, 0.88888889, 1.        ])

\(np.random.randint((a,b,(n,m)))\)

np.random.randint(0,10,(2,3))
array([[0, 5, 5],
       [3, 5, 4]])

特性

\(ndarray.ndim\) 维度的数量

\(ndarray.size\) 元素的数量

\(ndarray.dtype\) 数组中元素的数据类型

\(ndarray.itemsize\) 数组中元素所占字节数

\(ndarray.shape\) 返回数组的形状
\(ndarray.reshape\) 改变数组的形状

b=np.random.randint(0,10,(2,3))
>>> b
array([[3, 5, 1],
       [1, 4, 2]])
>>> b.shape
(2, 3)
>>> b.reshape(b.size)
array([3, 5, 1, 1, 4, 2])

索引

建立两个 \(ndarray\) 如下

>>> a=np.arange(12).reshape(3,4)
>>> a
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11]])
>>> b=np.array([1,2,3])
>>> b
array([1, 2, 3])

单值索引

类似于c语言中数组操作

>>> a[0]
array([0, 1, 2, 3])
>>> a[1]
array([4, 5, 6, 7])
>>> a[2]
array([ 8,  9, 10, 11])
>>> a[1][0]
4

切片索引

>>> a[:,1:3]
array([[ 1,  2],
       [ 5,  6],
       [ 9, 10]])
>>> a[:,0]
array([0, 4, 8])

列表索引

>>> a[[1,0,2]]
array([[ 4,  5,  6,  7],
       [ 0,  1,  2,  3],
       [ 8,  9, 10, 11]])
    #第1行,第0行,第2行

布尔索引

通过布尔表达式进行索引

>>> a[a>5]
array([ 6,  7,  8,  9, 10, 11])

运算

广播运算

>>> a=np.random.randint(100,200,(3,4))
>>> a
array([[116, 177, 192, 193],
       [171, 171, 101, 165],
       [172, 161, 128, 170]])
>>> a>150
array([[False,  True,  True,  True],
       [ True,  True, False,  True],
       [ True,  True, False,  True]])
>>> a[a>150]=100
>>> a
array([[116, 100, 100, 100],
       [100, 100, 101, 100],
       [100, 100, 128, 100]])

标量运算

\(numpy\) 库提供了一些数学运算符
\(\sin \quad \sinh\quad\arcsin\quad\cos...\)
\(ceil\quad fix\quad round\quad floor\)
\(mod\quad sqrt\quad abs\quad sign\)

np.sin(a)
array([[ 0.23666139, -0.50636564, -0.50636564, -0.50636564],
       [-0.50636564, -0.50636564,  0.45202579, -0.50636564],
       [-0.50636564, -0.50636564,  0.72103771, -0.50636564]])

矩阵运算

点乘

>>> a=np.linspace(1,6,6).reshape(2,3)
>>> a
array([[1., 2., 3.],
       [4., 5., 6.]])
>>> b=np.linspace(1,6,6).reshape(3,2)
>>> b
array([[1., 2.],
       [3., 4.],
       [5., 6.]])
>>> a.dot(b)
array([[22., 28.],
       [49., 64.]])

星乘
矩阵对应元素相乘

>>> a=np.linspace(1,6,6).reshape(2,3)
>>> a*a
array([[ 1.,  4.,  9.],
       [16., 25., 36.]])

四则运算

>>> a=np.arange(9).reshape(3,3)
>>> a
array([[0, 1, 2],
       [3, 4, 5],
       [6, 7, 8]])
>>> b=np.array([10,10,10])
>>> print(np.add(a,b))
[[10 11 12]
 [13 14 15]
 [16 17 18]]
 >>> print(np.subtract(a,b))
[[-10  -9  -8]
 [ -7  -6  -5]
 [ -4  -3  -2]]
>>> print(np.multiply(a,b))
[[ 0 10 20]
 [30 40 50]
 [60 70 80]]
>>> print(np.divide(a,b))
[[0.  0.1 0.2]
 [0.3 0.4 0.5]
 [0.6 0.7 0.8]]

操作

广播

当矩阵操作需要两矩阵形状相同却不相同时,会利用广播机制强行使其相同

>>> a=np.linspace(1,12,12).reshape(4,3)
>>> a
array([[ 1.,  2.,  3.],
       [ 4.,  5.,  6.],
       [ 7.,  8.,  9.],
       [10., 11., 12.]])
>>> b=np.array([0,1,2])
>>> b
array([0, 1, 2])
>>> a+b
array([[ 1.,  3.,  5.],
       [ 4.,  6.,  8.],
       [ 7.,  9., 11.],
       [10., 12., 14.]])

在执行矩阵加法时,广播机制强制改变b矩阵,使其c成为每一行都是 \([0,1,2]\) 的 3x4 矩阵

统计函数

\(np.amin()\)
\(np.amax()\)

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

标签:10,numpy,np,quad,array,True,100
来源: https://www.cnblogs.com/misasteria/p/16596433.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有