Numpy系列之Numpy对象的属性和创建
Numpy的核心是ndarray对象,这个对象封装了同质数据类型的n维数组。
1、ndarray对象的主要属性
属性 | 说明 |
---|---|
.ndim | 维度或axis的 数量 |
.shape | 数组的维度(m,n) |
.size | 数组元素的个数(m*n) |
.dtype | 数组元素的类型 |
说明:
1、可通过.shape[n]形式获得每一维的元素个数,其中n是维度,从0开始。通常使用.shape[0]获取输入数据样本的个数。
特征1 | 特征2 | 特征3 | |
---|---|---|---|
样本1 | 1 | 2 | 3 |
样本2 | 4 | 5 | 6 |
import numpy as np
a = np.array([[1,2,3],[4,5,6]])
print(a.shape) # 输出(2,3)
print(a.shape[0]) # 输出2,代表数据有多少个样本
print(a.shape[1]) # 输出3,代表每个样本有多少个特征
array的类型及转化方法
当array进行不同元素类型转化的时候,一般遵循“尽可能保留更多有效信息”的原则进行转化。
# 整型转浮点型
np.array([1, 1.1])
强制输出某一类型对象
a = np.array([1, 1.1], dtype = 'int') # dtype参数
a
array类型转化
也可以针对已经创建好的Array进行类型转化。此时使用astype方法。
a = np.array([1, 2])
a.astype(np.float64) # 但不改变原对象
a = a.astype(np.float64)
a = a.astype("float")
2、ndarray对象的创建
array函数 创建
从Python的列表List和嵌套列表创建array
一维数组的创建
import numpy as np
a = np.array([1,2,3,4,5,6], dtype=np.float64) # dtype可选
print(a)
二维数组的创建
import numpy as np
a = np.array([[1,2,3],[4,5,6]], dtype=np.float64)
print(a)
arange等函数 创建
使用预定函数arange、ones/ones_like、zeros/zeros_like、empty/empty_like、full/full_like、eye等函数创建
numpy.arange(start, stop, step)
参数 | 说明 |
---|---|
start | 起始值,默认为0 |
stop | 终止值(不包括) |
step | 步长,默认为1 |
import numpy as np
a = np.arange(1,10,2)
print(a) # 输出[1 3 5 7 9]
np.linspace(start, stop, num=50, endpoint=True, retstep=False,dtype = None)
参数 | 说明 |
---|---|
start | 起始值 |
stop | 终止值,是否包含取决于endpoint=True |
num | 生成数组元素的个数,默认为50 |
endpoint | endpoint=True,包含stop对应的数值 |
retstep | retstep=True,包含stop对应的数值 |
dtype | 数组元素的类型 |
np.linspace()函数用于创建一个一维数组,数组是一个等差数列构成的。
import numpy as np
a = np.linspace(5,50, num=10, endpoint=True,dtype=np.int64)
print(a) # 输出[5 10 15 20 25 30 35 40 45 50]
np.zeros(shape)
使用zeros创建全是0的数组
np.zeros(shape, dtype=None, order=‘C’)
说明:shape是一个元组
import numpy as np
a = np.zeros((2,3),dtype=np.int64)
print(a) # 输出[[0 0 0],[0 0 0]]
np.ones(shape)
使用ones创建全是1的数组
np.ones(shape, dtype=None, order=‘C’)
import numpy as np
a = np.ones((2,3),dtype=np.float64)
print(a) # 输出[[1. 1. 1.] [1. 1. 1.]]
np.full(shape)
使用full创建指定值的数组
np.full(shape, fill_value, dtype=None, order=‘C’)
import numpy as np
a = np.full((2,3),6)
print(a) # 输出[[6. 6. 6.] [6. 6. 6.]]
随机数(random) 创建
生成随机数的np.random模块构建
numpy.random.random(size=None)
该方法返回[0.0, 1.0)(左闭右开)范围的随机数。
import numpy as np
np.random.seed(6)
a = np.random.random(size=(2,3))
print(a) # 输出[[0.89286015 0.33197981 0.82122912] [0.04169663 0.10765668 0.59505206]]
numpy.random.randint(low, high=None, size=None, dtype=None)
该方法主要有三个参数low、high、size 三个参数。默认high 是None,如果只有low,那范围就是[0,low)。如果有high,范围就是[low,high)。
import numpy as np
np.random.seed(6)
a = np.random.randint(1,7,size=(2,3))
print(a) # 输出[[3 2 4] [5 3 6]]
numpy.random.rand(d0,d1,…,dn)
随机数组:rand生成服从01均匀分布的随机数
返回数据在[0, 1)之间,具有均匀分布
import numpy as np
np.random.rand(2, 5)
numpy.random.randn(d0,d1,…,dn)
randn 函数返回一个或一组样本,具有标准正态分布(期望为0,方差为1)。
d0,d1,…,dn 表示每个维度有多少个元素
import numpy as np
np.random.seed(6)
a = np.random.rand(2,3)
print(a) # 输出[[-0.31178367 0.72900392 0.21782079] [-0.8990918 -2.48678065 0.91325152]]
np.random.normal(loc=1.0,scale=1.0,size=None) 指定期望和方差的正太分布
正太分布loc:期望 scale:方差 size 形状
import numpy as np
np.random.seed(6)
a = np.random.normal(80,100,(2,3))
print(a) # 输出[[ 48.82163265 152.90039236 101.78207881] [ -9.90917965 -168.67806516 171.32515212]]
np.random.uniformal(low=0.0, high=1.0, size=None) 产生具有均匀分布的数组
起始值low 结束值high 形状size
import numpy as np
np.random.seed(6)
a = np.random.uniform(80,90,(2,3))
print(a) # 输出[[88.92860151 83.31979805 88.21229123] [80.41696626 81.0765668 85.95052064]]
np.random.shuffle(x)
x : array_like
The array or list to be shuffled.
a = np.arange(20).reshape(4,5)
# 如果数组是多维的,则只会在第一维度打散数据
np.random.shuffle(a)
a