NumPy数值计算基础(数组的创建方法,生成随机数)

Numpy  简介

Numpy 是用于数据科学计算的基础,不但能够完成科学计算任务,还能被用作高效地多维数据容器。用于存储和处理大型矩阵。

Python提供了一个 array 模块,和list 不同,它直接保存数值,但是由于Python的 array 模块不支持多维,也没有各种运算函数。

Numpy 弥补了这一遗憾。Numpy 提供了一种存储单一数据类型的多维数组——ndarray(下文统称数组)

1、数组属性:
      ndarray(数组)是存储单一数据类型的多维数组。

 
属性说明
ndim返回 int。表示数组的维数
shape返回 tuple。表示数组的尺寸,对于 n 行 m 列的矩阵,形状为(n,m)
size返回 int。表示数组的元素总数,等于数组形状的乘积
dtype返回 data-type。描述数组中元素的类型
itemsize返回 int。表示数组的每个元素的大小(以字节为单位)

2、数组创建(创建一维或多维数组)
      numpy.array(object,dtype=None,copy=True,order=‘K’,subok=False,ndmin=0)

参数名称说明
object接收 array。表示想要创建的数组。无默认
dtype接收 data-type。表示数组所需的数据类型。如果未给定,则选择
保存对象所需的最小类型。默认为 None
ndmin接收 int。指定生成数组应该具有的最小维数。默认为 None

数组的创建

(1)一维数组的创建

import numpy as np

arr1 = np.array([1,2,3,4])
print(arr1)
# 结果: [1 2 3 4]

print(type(arr1))
# 结果: <class 'numpy.ndarray'>

 

(2)二维数组的创建

import numpy as np

arr2 = np.array([[1,2,3,4],[4,5,6,6],[7,8,9,10]])
print(arr2)
# 结果: 
# [[ 1  2  3  4]
#  [ 4  5  6  6]
#  [ 7  8  9 10]]

print(type(arr2))
# 结果: <class 'numpy.ndarray'>

 

(3)数组的属性

import numpy as np

arr = np.array([[1,2,3,4],[4,5,6,6],[7,8,9,10]])

print('数组结构:',arr.shape) 
print('数组元素个数:',arr.size)
print('数组元素类型:',arr.dtype)
print('数组维度:',arr.ndim)
print('数组元素大小:',arr.itemsize)

# 结果: 
# 数组结构: (3, 4)  # 3行4列
# 数组元素个数: 12
# 数组元素类型: int32
# 数组维度: 2   # 二维数组
# 数组元素大小: 4 

 

(4)重设数据结构

import numpy as np

arr = np.array([[1,2,3,4],[4,5,6,6],[7,8,9,10]])    # 原本3行4列
print(arr)
# 结果: 
# [[ 1  2  3  4]
#  [ 4  5  6  6]
#  [ 7  8  9 10]]

arr.shape = 4,3    # 重设为4行3列
print('重设arr2数据结构后:',arr)
# 重设arr2数据结构后: 
# [[ 1  2  3]
#  [ 4  4  5]
#  [ 6  6  7]
#  [ 8  9 10]]

 

numpy中自动生成数组的函数

(1)arange()函数的表达式

格式: arange(起始值,结束值,步长)    注意: 不包含结束值

import numpy as np

print(np.arange(1,10,1))
# 结果: [1 2 3 4 5 6 7 8 9]

 range与arange的区别:

range( )函数只能创建int型list,如果步长不是整数,是小数,则会出现错误

arange()可以使用float型数据

import numpy as np

arr = np.arange(0,1,0.1)    # arange()可以使用float型数据
print(arr)
# 结果: [ 0.   0.1  0.2  0.3  0.4  0.5  0.6  0.7  0.8  0.9]

arr2 = list(range(1,10,1))
print(arr2)
# 结果: [1, 2, 3, 4, 5, 6, 7, 8, 9]

arr3 = list(range(1,10,0.1))    # 如果步长是float类型,则会报错
print(arr3)
# 结果: ypeError: 'float' object cannot be interpreted as an integer

 

(2)等差数列:  linspace(起始值,结束值,元素个数) 

import numpy as np

arr = np.linspace(1,10,10)
print(arr)
# 结果: [  1.   2.   3.   4.   5.   6.   7.   8.   9.  10.]

 

(3)等比数列: logspace(起始值10^a,结束值10^b,元素个数),底数默认为10

import numpy as np

arr = np.logspace(1,2,5)
print(arr)
# 结果: [  10.           17.7827941    31.6227766    56.23413252  100.        ]

 

(4)全0数组

import numpy as np

arr = np.zeros((2,3))   # 2行3列
print(arr)
# 结果:
# [[ 0.  0.  0.]
#  [ 0.  0.  0.]]

 

(5)全1数组

import numpy as np

arr = np.ones((2,3))  # 2行3列
print(arr)
# 结果:
# [[ 1.  1.  1.]
#  [ 1.  1.  1.]]

 

(6)单位数组

import numpy as np

arr = np.eye(3)  # 3行3列
print(arr)
# 结果:
# [[ 1.  0.  0.]
#  [ 0.  1.  0.]
#  [ 0.  0.  1.]]

 

(7)对角数组: diag,一定是方阵

import numpy as np

arr = np.diag([1,2,3,4])  
print(arr)
# 结果:
# [[1 0 0 0]
#  [0 2 0 0]
#  [0 0 3 0]
#  [0 0 0 4]]

 

生成随机数

(1)0~1的一维数组:  np.random.random

import numpy as np

arr = np.random.random(10)   # 随机取10个
print(arr)

# 结果:
# [ 0.51801865  0.5746457   0.29800094  0.81485959  0.54768688  0.40696099
#   0.94247636  0.74356589  0.95578567  0.79127131]

 

(2)均匀分布:  np.random.rand

以给定的形状创建一个数组,并在数组中加入在[0,1)之间均匀分布的随机样本

import numpy as np

arr = np.random.rand(4,3) 
print(arr)

# 结果:
# [[ 0.80227604  0.88811862  0.41145791]
#  [ 0.7945255   0.47529523  0.67895032]
#  [ 0.34225024  0.82894344  0.03426757]
#  [ 0.793489    0.00724797  0.58662593]]

arr2 = np.random.rand(2) 
print(arr2)

# 结果: [ 0.23103931  0.66302526]

 

(3)正态分布:  np.random.randn 

通过本函数可以返回一个或一组服从标准正态分布的随机样本值,标准正态分布是以0为均数、以1为标准差的正态分布,记为N(0,1)

import numpy as np

arr = np.random.randn(4,3)
print(arr)

# 结果例如:
# [[ 0.04315637 -0.45477833 -0.27857073]
#  [-1.91932412  0.7338659   0.2525201 ]
#  [ 0.18677151  0.84322074  1.65225377]
#  [ 0.28711352 -0.79008218  0.72578138]]

arr2 = np.random.randn(3)
print(arr2)

# 结果例如: [-0.78690609  0.56418809 -1.64700147]

 

(4)随机整数:  np.random.randint(最小值,最大值,size=[行,列])

import numpy as np

arr = np.random.randint(2,10,size=[2,5])
print(arr)

# 结果: 
# [[6 8 5 9 7]
#  [8 2 7 8 5]]

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值