一、NumPy简介

  NumPy是高性能科学计算和数据分析的基础包。它是pandas等其他各种工具的基础。

1、NumPy的主要功能

  (1)ndarray:一个多维数组结构,高效且节省空间。

  (2)无需循环对整组数据进行快速运算的数学函数。

  (3)线性代数、随机数生成和傅里叶变换功能。

2、安装和引用

pip install numpy   # 安装方法

import numpy as np    # 引用方法

3、为什么要使用NumPy?

(1)例:已知若干家跨国公司的市值(美元),将其换算为人民币

import numpy as np
import random # uniform随机生成浮点数,这里是随机生成100~200之间的浮点数
a = [random.uniform(100.0, 200.0) for i in range(50)]
print(a)
x = 6.8 # 人民币和美元的汇率 # 方法一:使用循环
b = []
for ele in a:
b.append(ele * x)
print(b) # 方法二:使用numpy
a = np.array(a)
c = a * x
print(c)

(2)例:已知购物车中每件商品的价格和商品件数,求总金额

import numpy as np
import random # uniform随机生成浮点数,这里是随机生成100~200之间的浮点数
a = [random.uniform(100.0, 200.0) for i in range(50)]
g = [random.randint(1, 10) for j in range(50)]
d = np.array(g) sum = a*d.sum() # 所有商品总金额
print(sum)

二、ndarray-多维数组对象

  创建ndarray:np.array(array_like)

  数组和列表的区别:

  1. 数组对象内的元素类型必须相同
  2. 数组大小不可修改

1、ndarray常用属性

属性 属性含义
T 数组的转置(对高维数组而言)
size 数组元素的个数
ndim 数组的维数
shape 数组的维度大小(元组形式)
dtype 数组元素的数据类型

(1)dtype

  可以查看具体数据类型。

>>> import numpy as np
>>> a = np.array(range(10))
>>> a
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> a.dtype
dtype('int64')

(2)size

  查看当前存了多少个元素。

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

(3)ndim

  查看数组的维数。

>>> a
array([[1, 2, 3],
[4, 5, 6]])
>>> a.ndim
2

(3)shape

  返回一个元组,说明当前数组对象是一个几行几列的多维数组。

>>> a = np.array([[1,2,3], [4,5,6]])
>>> a
array([[1, 2, 3],
[4, 5, 6]])
>>> a.dtype
dtype('int64')
>>> a.size
6
>>> a.shape
(2, 3) # 返回一个元组,说明是一个两行三列的二维数组 # 三维数组
>>> a = np.array([[[1,2,3], [4,5,6]],[[1,2,3], [3,4,5]]])
>>> a
array([[[1, 2, 3],
[4, 5, 6]],
[[1, 2, 3],
[3, 4, 5]]])
>>> a.shape # 两页两行三列的三维数组
(2, 2, 3)

  还可以使用reshape函数来调整数组大小

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

  查看获取对应位置元素

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

(4)T

  数组转置。

>>> a = np.array([[1,2,3], [4,5,6]])
>>> a
array([[1, 2, 3],
[4, 5, 6]])
>>> a.T
array([[1, 4],
[2, 5],
[3, 6]])
>>> a = a.T
>>> a.T
array([[1, 2, 3],
[4, 5, 6]])
>>> _.T
array([[1, 4],
[2, 5],
[3, 6]])

2、ndarray数据类型

  ndarray中绝大多数情况下都是保存各种数字,基本不保存字符串数据。

类型 字节细分
布尔型 bool_
整型 int_ int8 int16 int32 int64
无符号整型 uint8 uint16 uint32 uint64
浮点型 float_ float16 float32 float64
复数型 complex_ complex64 complex128

注意:

  (1)64位的整数最大值是:263-1=9223372036854775807;

  (2)无符号整型只表示正数,因此64位的无符号整数最大值是:2
64-1=18446744073709551615

3、ndarray对象创建

方法 描述
array() 将列表转换为数组,可选择显示指定dtype
arange() range的numpy版,支持浮点数
linespace() 类似arange(),第三个参数为数组长度
zeros() 根据指定形状和dtype创建全0数组
ones() 根据指定形状和dtype创建全1数组
empty() 根据指定形状和dtype创建空数组(随机值)
eye() 根据指定边长创建单位矩阵

(1)zeros、ones

  zeros:生成值全为0的数组。

  ones:生成值全为1的数组。

# 列表的方法
>>> np.array([0]*10)
array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0]) # zeros()方法
>>> np.zeros(10)
array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0.])
>>> a = np.zeros(10)
>>> a.dtype
dtype('float64') # 默认计算是浮点数 # 设置类型参数
>>> a = np.zeros(10, dtype='int')
>>> a
array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0]) # ones()方法生成全是全为1的数组
>>> a = np.ones(10)
>>> a
array([1., 1., 1., 1., 1., 1., 1., 1., 1., 1.])

(2)empty

  根据指定形状和dtype创建空数组(随机数)。取到内存内留存的值。

  可以先创建数组,再将这些值都覆盖掉。

>>> a = np.empty(100)
>>> a
array([ 2.00000000e+000, 2.00000000e+000, 2.86558075e-322,
...
7.10580593e+159])

  

(3)arange

  range的numpy版,支持浮点数。

>>> np.arange(10)
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) # 设置起始值和结束值
>>> np.arange(3,9)
array([3, 4, 5, 6, 7, 8]) # 设置起始值、结束值和步长(python的range没有步长设置)
>>> np.arange(2,7,0.5) # 注意:步长可以为小数
array([2. , 2.5, 3. , 3.5, 4. , 4.5, 5. , 5.5, 6. , 6.5])

(4)linespace

  数学中的概念:线性空间。它与arange使用非常相似。但第三个参数不是步长还是把数组分为多少份。

>>> np.linspace(0,10,11)
array([ 0., 1., 2., 3., 4., 5., 6., 7., 8., 9., 10.])
>>> _.size
11 >>> np.linspace(0,9,20)
array([0. , 0.47368421, 0.94736842, 1.42105263, 1.89473684,
2.36842105, 2.84210526, 3.31578947, 3.78947368, 4.26315789,
4.73684211, 5.21052632, 5.68421053, 6.15789474, 6.63157895,
7.10526316, 7.57894737, 8.05263158, 8.52631579, 9. ]) # 数学中应用
import numpy as np
import matplotlib.pyplot as plt # python的绘图库 x = np.linspace(-10,10,10000)
y = x**2
plt.plot(x,y) # 使用matplotlib来绘制点
plt.show()

  应用执行效果如下:

(5)eye

  生成线性代数中的单位矩阵。对角线为1,其他位置是0。

>>> np.eye(5)
array([[1., 0., 0., 0., 0.],
[0., 1., 0., 0., 0.],
[0., 0., 1., 0., 0.],
[0., 0., 0., 1., 0.],
[0., 0., 0., 0., 1.]])

三、ndarray-批量运算

1、数组和标量之间的运算

a+1 a*3 1//a a**0.5 a>5

>>> a = np.arange(10)
>>> a
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> a+1
array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
>>> a*3
array([ 0, 3, 6, 9, 12, 15, 18, 21, 24, 27])
>>> 3/a
array([ inf, 3. , 1.5 , 1. , 0.75 ,
0.6 , 0.5 , 0.42857143, 0.375 , 0.33333333])
<string>:1: RuntimeWarning: divide by zero encountered in true_divide

2、同样大小数组之间的运算

a+b a/b a**b a%b a==b a>b

>>> b = np.arange(10,20)
>>> a
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> b
array([10, 11, 12, 13, 14, 15, 16, 17, 18, 19])
>>> a+b
array([10, 12, 14, 16, 18, 20, 22, 24, 26, 28]) >>> a>b
array([False, False, False, False, False, False, False, False, False,
False])
>>> a[0]=20
>>> a>b
array([ True, False, False, False, False, False, False, False, False,
False])

四、numPy索引和切片

  ndarray对象的内容可以通过索引或切片来访问和修改,与 Python 中 list 的切片操作一样。

  ndarray 数组可以基于 0 - n 的下标进行索引,切片对象可以通过内置的 slice 函数,并设置 start, stop 及 step 参数进行,从原数组中切割出一个新数组。

1、ndarray-索引

# 一维数组的索引
>>> a=np.arange(10)
>>> a
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> a[5]
5 # 多维数组的索引
>>> a = a.reshape((2,5))
>>> a
array([[0, 1, 2, 3, 4],
[5, 6, 7, 8, 9]])
# (1)列表式写法
>>> a[1][3]
8
# (2)新式写法
>>> a[1,3]
8

2、ndarray-切片

# 一维数组的切片
>>> a = np.arange(15)
>>> a
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14])
>>> a[0:4]
array([0, 1, 2, 3])
>>> a[:4]
array([0, 1, 2, 3])
>>> a[4:]
array([ 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]) # 多维数组的切片
>>> a = np.arange(15).reshape((3,5))
>>> a
array([[ 0, 1, 2, 3, 4],
[ 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14]])
>>> a[0:2,0:2] # 切前两行前两列
array([[0, 1],
[5, 6]])
>>> a[1:, 2:4] # 从第二行开始切,切第3-4列
array([[ 7, 8],
[12, 13]])

  数组切片和列表切片的不同:数组切片时并不会自动复制(而是创建一个视图),在切片数组上的修改会影响原数组。

>>> a = np.arange(10)
>>> a
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> b = list(range(10))
>>> b
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> c = a[0:4]
>>> c
array([0, 1, 2, 3])
>>> d = b[0:4]
>>> d
[0, 1, 2, 3]
>>> c[0] = 20
>>> d[0] = 20
>>> c
array([20, 1, 2, 3])
>>> d
[20, 1, 2, 3]
>>> a # 可以看到对切片数组修改影响了原数组
array([20, 1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> b
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

  copy()方法可以创建数组的深拷贝。

>>> a[0] = 0
>>> a
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> c = a[0:4].copy()
>>> c
array([0, 1, 2, 3])
>>> c[0] = 20
>>> c
array([20, 1, 2, 3])
>>> a
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

五、高级索引

1、ndarray-布尔型索引

  布尔型索引:将同样大小的布尔数组传进索引,会返回一个由所有True对应位置的元素的数组。

(1)问题:给一个数组,选出数组中所有大于5的数

# 常规方法
>>> import random
>>> a = [random.randint(0, 10) for i in range(20)]
>>> a
[8, 2, 4, 0, 9, 0, 1, 7, 10, 9, 4, 0, 5, 8, 5, 8, 4, 0, 3, 8]
>>> filter(lambda x:x>5, a)
<filter object at 0x11704b320>
>>> list(filter(lambda x:x>5, a))
[8, 9, 7, 10, 9, 8, 8, 8] # 布尔索引解决
>>> a = np.array(a) # 列表转化为数组
>>> a
array([ 8, 2, 4, 0, 9, 0, 1, 7, 10, 9, 4, 0, 5, 8, 5, 8, 4,
0, 3, 8])
>>> a[a>5]
array([ 8, 9, 7, 10, 9, 8, 8, 8])

  原理:数组和标量的运算,a > 5 会对a中的每一个元素进行判断,返回一个布尔数组。

     布尔型索引,将同样大小的布尔数组传进索引,会返回一个由所有True对应位置的元素的数组。

(2)问题:给一个数组,选出数组中所有大于5的偶数。

>>> a
array([ 8, 2, 4, 0, 9, 0, 1, 7, 10, 9, 4, 0, 5, 8, 5, 8, 4,
0, 3, 8])
>>> b = a[a>5]
>>> b
array([ 8, 9, 7, 10, 9, 8, 8, 8])
>>> b[b%2==0]
array([ 8, 10, 8, 8, 8]) # 合并写法
>>> a
array([ 8, 2, 4, 0, 9, 0, 1, 7, 10, 9, 4, 0, 5, 8, 5, 8, 4,
0, 3, 8])
>>> a[(a>5) & (a%2==0)] # 与运算 注意:& 和 and的区别
array([ 8, 10, 8, 8, 8])

(3)问题:给一个数组,选出数组中所有大于5的数和偶数。(or)

# 或运算,or关系
a[(a>5) | (a%2==0)]
array([ 8, 2, 4, 0, 9, 0, 7, 10, 9, 4, 0, 8, 8, 4, 0, 8])

2、ndarray-花式索引

  花式索引指的是利用整数数组进行索引。

  花式索引根据索引数组的值作为目标数组的某个轴的下标来取值。对于使用一维整型数组作为索引,如果目标是一维数组,那么索引的结果就是对应位置的元素;如果目标是二维数组,那么就是对应下标的行。

  花式索引跟切片不一样,它总是将数据复制到新数组中。

(1)问题:对于一个数组,选出其第1,3,4,6,7个元素,组成新的二维数组。

>>> a = np.arange(20)
>>> a
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
17, 18, 19])
>>> a[[1,3,4,6,7]] # 整数数组索引
array([1, 3, 4, 6, 7])

(2)问题:对一个二维数组,选出其第一列和第三列,组成新的二维数组。

>>> a = np.arange(20).reshape(4,5)
>>> a
array([[ 0, 1, 2, 3, 4],
[ 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14],
[15, 16, 17, 18, 19]])
>>> a[0, 2:4]
array([2, 3])
>>> a[0]>2
array([False, False, False, True, True])
>>> a[0, a[0]>2]
array([3, 4])
# 注意花式索引不能同时出现在逗号两边,比如想选择6、8、16、18
>>> a[[1,3], [1,3]]
array([ 6, 18]) # 实际取的是a[1,1] 和a[3,3]的值 # 实际解法如下所示:
>>> a[[1,3],:] # 第1行到第4行,列全切
array([[ 5, 6, 7, 8, 9],
[15, 16, 17, 18, 19]])
>>> a[:,[1,3]] # 行全切,切第一列到第三列
array([[ 1, 3],
[ 6, 8],
[11, 13],
[16, 18]])
>>> a[[1,3],:][:,[1,3]]
array([[ 6, 8],
[16, 18]])

六、NumPy-array通用函数

  通用函数:能同时对数组中所有元素进行运算的函数。常见通用函数如下所示:

1、一元函数

  abs,sqrt,exp,log,ceil,floor,rint,trunc,modf,isnan,isinf,cos,sin,tan

>>> a = np.arange(-5,5)
>>> a
array([-5, -4, -3, -2, -1, 0, 1, 2, 3, 4]) >>> np.abs(a) # 取绝对值
array([5, 4, 3, 2, 1, 0, 1, 2, 3, 4])
>>> abs(a)
array([5, 4, 3, 2, 1, 0, 1, 2, 3, 4]) >>> np.sqrt(a) # 开方
<string>:1: RuntimeWarning: invalid value encountered in sqrt
array([ nan, nan, nan, nan, nan,
0. , 1. , 1.41421356, 1.73205081, 2. ]) # 向下取整:单个是math.floor();批量是:np.floor()
>>> import math
>>> math.floor(-1.6)
-2
>>> math.floor(1.6)
1
# 向上取整:单个是math.ceil(),批量是np.ceil()
>>> math.ceil(1.6)
2
>>> math.ceil(-1.6)
-1
# 四舍五入:round()
>>> round(1.6)
2
>>> round(-1.6)
-2
>>> round(-1.3)
-1 # 批量操作
>>> a = np.arange(-5.5, 5.5)
>>> a
array([-5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 4.5])
>>> np.floor(a) # 向下取整
array([-6., -5., -4., -3., -2., -1., 0., 1., 2., 3., 4.])
>>> np.ceil(a) # 向上取整
array([-5., -4., -3., -2., -1., -0., 1., 2., 3., 4., 5.])
>>> np.round(a) # 四舍五入
array([-6., -4., -4., -2., -2., -0., 0., 2., 2., 4., 4.])
>>> np.rint(a) # 四舍五入(同round())
array([-6., -4., -4., -2., -2., -0., 0., 2., 2., 4., 4.])
>>> np.trunc(a) # 截断(丢弃小数部分)
array([-5., -4., -3., -2., -1., -0., 0., 1., 2., 3., 4.]) # modf:整数和小数部分分拆
>>> a
array([-5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 4.5])
>>> np.modf(a)
(array([-0.5, -0.5, -0.5, -0.5, -0.5, -0.5, 0.5, 0.5, 0.5, 0.5, 0.5]), array([-5., -4., -3., -2., -1., -0., 0., 1., 2., 3., 4.]))
>>> k,y = np.modf(a)
>>> k
array([-0.5, -0.5, -0.5, -0.5, -0.5, -0.5, 0.5, 0.5, 0.5, 0.5, 0.5])
>>> y
array([-5., -4., -3., -2., -1., -0., 0., 1., 2., 3., 4.])

2、二元函数

  add,substract,multiply,divide,power,mod,maximum,mininum

# maximum:对两个数组每个值均取最大值
>>> a
array([3, 4, 5, 6, 7])
>>> b
array([3, 0, 5, 0, 7])
>>> np.maximum(a,b)
array([3, 4, 5, 6, 7]) # minimum:对两个数组每个值均取最小值
>>> np.minimum(a,b)
array([3, 0, 5, 0, 7])

3、补充:浮点数特殊值

  Numpy中创建特殊值:np.nan np.inf

  在数据分析中,nan常被用作表示数据缺失值

# python中有两个浮点数特殊值
>>> float('3.5')
3.5
>>> float('nan')
nan
>>> float('inf')
inf # nan(Not a Number):不等于任何浮点数(nan != nan)
>>> a = np.arange(5)
>>> a
array([0, 1, 2, 3, 4])
>>> a/a
<string>:1: RuntimeWarning: invalid value encountered in true_divide
array([nan, 1., 1., 1., 1.])
>>> np.nan # 获取nan值
nan
>>> np.nan == np.nan # 两个nan不相等,因为nan不等于任何值
False >>> b = a/a
>>> b
array([nan, 1., 1., 1., 1.])
>>> np.isnan(b) # 判断出数组中哪些是nan值
array([ True, False, False, False, False])
>>> b[~(np.isnan(b))] # ~取反
array([1., 1., 1., 1.]) # inf(infinity):比任何浮点数都大,表示无穷大的数
>>> float('inf') > 10000000
True
>>> a = np.array([3,4,5,6,7])
>>> b = np.array([3,0,5,0,7])
>>> a/b
array([ 1., inf, 1., inf, 1.])
>>> np.inf == np.inf # 无穷大的数可以相等
True # 过滤掉数组中inf的数
>>> c = a/b
>>> c
array([ 1., inf, 1., inf, 1.])
>>> c[c!=np.inf]
array([1., 1., 1.])
# 利用isinf()的写法
>>> c[~np.isinf(c)]
array([1., 1., 1.])

七、NumPy-数学和统计方法

>>> a
array([3, 4, 5, 6, 7]) # sum:求和
>>> a.sum()
25 # mean:求平均数
>>> a.mean()
5.0 # var:求方差,方差表示整组数据的离散程度
>>> a.var()
2.0
# 方差公式验证:
>>> a
array([3, 4, 5, 6, 7])
>>> ((3-5)**2 + (4-5)**2 + (5-5)**2 + (6-5)**2 + (7-5)**2)/5
2.0 # std:求标准差(对方差开根)
>>> a.std()
1.4142135623730951
>>> math.sqrt(2)
1.4142135623730951
# 标准差和均值可以估计整个数组的范围
>>> a = np.arange(0,10,0.2)
>>> a
array([0. , 0.2, 0.4, 0.6, 0.8, 1. , 1.2, 1.4, 1.6, 1.8, 2. , 2.2, 2.4,
2.6, 2.8, 3. , 3.2, 3.4, 3.6, 3.8, 4. , 4.2, 4.4, 4.6, 4.8, 5. ,
5.2, 5.4, 5.6, 5.8, 6. , 6.2, 6.4, 6.6, 6.8, 7. , 7.2, 7.4, 7.6,
7.8, 8. , 8.2, 8.4, 8.6, 8.8, 9. , 9.2, 9.4, 9.6, 9.8])
>>> a.mean()
4.9
>>> a.std() # 标准差
2.8861739379323628
>>> a.mean()-a.std() # 大概估计数组的范围
2.0138260620676376
>>> a.mean()-2*a.std()
-0.8723478758647252
>>> a.mean()+2*a.std()
10.672347875864727 # min:求最小值
>>> a.min()
0.0 # max:求最大值
>>> a.max()
9.8 # argmin:求最小值索引
>>> a.argmin()
0 # argmax:求最大值索引
>>> a.argmax()
49

八、NumPy-随机数生成

# python默认的random模块
>>> random.random()
0.5107400270751336
>>> random.randint(0,10)
9
>>> random.choice([1,3,4,5])
5
# shuffle():用于将列表中元素打乱
>>> a = [1,3,4,5,7]
>>> random.shuffle(a) # 打乱列表
>>> a
[1, 4, 7, 3, 5]
# uniform(a,b):用于生成一个指定范围内的整数。其中参数a是下限,参数b是上限,生成的随机数n:a<=n<=b
>>> random.uniform(2.0,4.0)
2.190653911434251 # 随机函数在np.random子包内方法
# rand:给定形状产生随机数组(0到1之间的数)
>>> np.random.rand(10)
array([0.28624648, 0.69121364, 0.74607992, 0.2587513 , 0.60445688,
0.2890542 , 0.88712216, 0.93544304, 0.99640741, 0.73059636]) # randint:给定形状产生随机整数
>>> np.random.randint(0,10) # 取范围内随机数
3
>>> np.random.randint(0,10,10) # 用随机数生成一个有10个元素的数组
array([7, 5, 6, 8, 5, 4, 1, 9, 7, 4])
>>> np.random.randint(0,10,(3,5)) # 用随机数生成一个三行五列的二维数组
array([[2, 1, 5, 0, 9],
[5, 4, 8, 7, 3],
[2, 0, 5, 9, 9]])
>>> np.random.randint(0,10,(3,5,5)) # 用随机数生成一个三维数组
array([[[7, 4, 8, 5, 9],
[8, 1, 4, 3, 5],
[9, 8, 9, 3, 1],
[8, 8, 7, 0, 7],
[7, 0, 8, 6, 8]],
[[3, 1, 8, 1, 2],
[8, 2, 7, 6, 4],
[4, 3, 8, 0, 6],
[3, 5, 3, 1, 2],
[4, 2, 6, 6, 2]],
[[4, 5, 5, 4, 6],
[0, 7, 5, 6, 6],
[6, 4, 8, 8, 2],
[5, 0, 3, 7, 9],
[8, 5, 6, 2, 5]]]) # choice:给定形状产生随机选择
>>> np.random.choice([1,2,3,4,5])
2
>>> np.random.choice([1,2,3,4,5],10)
array([1, 2, 1, 4, 1, 3, 2, 5, 3, 2]) # shuffle:与random.shuffle相同 # uniform:给定形状产生随机数组
>>> np.random.uniform(2.0,5.0)
2.9530512208056257
>>> np.random.uniform(2.0,5.0,10)
array([3.9142783 , 4.71991751, 4.05954663, 4.13170221, 3.88043716,
2.00233882, 2.34833856, 2.48430517, 3.07240671, 3.4608536 ])

科学计算基础包——Numpy的更多相关文章

  1. Python科学计算基础包-Numpy

    一.Numpy概念 Numpy(Numerical Python的简称)是Python科学计算的基础包.它提供了以下功能: 快速高效的多维数组对象ndarray. 用于对数组执行元素级计算以及直接对数 ...

  2. python的一些科学计算的包

    在安装numpy这类科学计算的包的时候,pip下载的东西有时候缺少一些东西. 可以到这里下载,根据提示信息,少哪个包,或者哪个包出现错误就安装哪个包. PIL到这里下载

  3. python科学计算库的numpy基础知识,完美抽象多维数组(原创)

    #导入科学计算库 #起别名避免重名 import numpy as np #小技巧:从外往内看==从左往右看 从内往外看==从右往左看 #打印版本号 print(np.version.version) ...

  4. windows下安装python科学计算环境,numpy scipy scikit ,matplotlib等

    安装matplotlib: pip install matplotlib 背景: 目的:要用Python下的DBSCAN聚类算法. scikit-learn 是一个基于SciPy和Numpy的开源机器 ...

  5. python 科学计算基础库安装

    1.numpyNumPy(Numeric Python)是用Python进行科学计算的基本软件包. NumPy是Python编程语言的扩展,增加了对大型多维数组和矩阵的支持,以及一个大型的高级数学函数 ...

  6. Python科学计算库灬numpy

    Numpy NumPy是一个功能强大的Python库,主要用于对多维数组执行计算.Numpy许多底层函数实际上是用C编写的,因此它的矩阵向量计算速度是原生Python中无法比拟的. numpy属性 维 ...

  7. python科学计算基础知识

    1.导入基本函数库 import numpy as np 2.获取矩阵元素字节数 a=np.array([1,2,3],dtype=np.float32) a.itemsizeoutput: 4 3. ...

  8. Python科学计算:用NumPy快速处理数据

    创建数组 import numpy as np a=np.array([1,2,3]) b=np.array([[1,2,3],[4,5,6],[7,8,9]]) b[1,1]=10 print(a. ...

  9. Python科学计算学习一 NumPy 快速处理数据

    1 创建数组 (1) array(boject, dtype=None, copy=True, order=None, subok=False, ndmin=0) a = array([1, 2, 3 ...

随机推荐

  1. 如何理解<base href="<%=basePath%>" ---转载

    原文链接http://316325524.blog.163.com/blog/static/6652052320111118111620897/ "base href " 今天在写 ...

  2. php代码书写习惯优化小结

    (1)使用 static 静态方法比普通方法快4倍(2)echo输出快于print(3)连接字符使用 , 代替 .(4)循环之前先取出最大值,而不是在循环里面取值    正确的方法      $max ...

  3. [POI2007]MEG-Megalopolis 树的dfs序+树状数组维护差分 BZOJ1103

    题目描述 Byteotia has been eventually touched by globalisation, and so has Byteasar the Postman, who onc ...

  4. jQuery.isEmptyObject() 函数详解 转

    原文地址 http://www.365mini.com/page/jquery_isemptyobject.htm jQuery.isEmptyObject()函数用于判断指定参数是否是一个空对象. ...

  5. pkg-config 切换opencv版本

    查看当前版本 pkg-config --modversion opencv 在~/.bashrc最后添加如下内容: CMAKE_INSTALL_PREFIX=/usr/local/opencv3 ex ...

  6. windows cmd下创建虚拟环境virtualenv

    一:虚拟环境virtualenv 如果在一台电脑上, 想开发多个不同的项目, 需要用到同一个包的不同版本, 如果使用上面的命令, 在同一个目录下安装或者更新, 新版本会覆盖以前的版本, 其它的项目就无 ...

  7. 网络寻路(思维+vector的应用)-----------蓝桥备战系列

    标题:网络寻路 X 国的一个网络使用若干条线路连接若干个节点.节点间的通信是双向的.某重要数据包,为了安全起见,必须恰好被转发两次到达目的地.该包可能在任意一个节点产生,我们需要知道该网络中一共有多少 ...

  8. CodeForces - 1110E-Magic Stones(差分+思维)

    Grigory has nn magic stones, conveniently numbered from 11 to nn. The charge of the ii-th stone is e ...

  9. new Date("2018-01-01 11:11:11").valueOf() 在IE下会返回 NaN

    原因是在ie下 new Date不能处理 小横线 这种时间格式,但是 替换成 斜线就可以正常获得毫秒数,像下面这样: new Date(('2018-01-01 11:11:11').replace( ...

  10. [转] 完全卸载删除gitlab

    [From] https://yq.aliyun.com/articles/114619 完全卸载删除gitlab 1.停止gitlab gitlab-ctl stop 2.卸载gitlab(注意这里 ...