Numpy基础3:创建对象

Numpy

基础3:创建对象

ndarray对象

	ndarray 类具有六个参数,它们分别是:
    shape # 数组的形状。
    dtype # 数据类型。
    buffer # 对象暴露缓冲区接口。
    offset # 数组数据的偏移量。
    strides # 数据步长。
    order # {'C','F'},以行或列为主排列顺序。  

创建方法

python基础类型转换

在 numpy 中,我们使用 numpy.array 将python基础类型转换为 ndarray 数组。其方法为:

numpy.array(object, dtype=None, copy=True, order=None, subok=False, ndmin=0) 
	object:列表、元组等。
	dtype:数据类型。如果未给出,则类型为被保存对象所需的最小类型。
	copy:布尔来写,默认 True,表示复制对象。
list强制转换为ndarray类型
li = [1,2,3,4,5]
np.array(li),np.array(li)[-1]

(array([1, 2, 3, 4, 5]), 5)

array强制转换为ndarray类型
tup = 1,2,3,4,5
np.array(tup),np.array(tup)[-1]

(array([1, 2, 3, 4, 5]), 5)

set 强制转换为ndarray类型
set = {1,2,3,4,5,4,3,2,1}
np.array(set)

array({1, 2, 3, 4, 5}, dtype=object)

dict的key是set类型
di = dict(a=1,b=2,c=3)
np.array(di)

array({‘a’: 1, ‘b’: 2, ‘c’: 3}, dtype=object)

arange 方法创建

除了直接使用 array 方法创建 ndarray,在 numpy 中还有一些方法可以创建一些有规律性的多维数。首先,我们来看一看 arange()。arange() 的功能是在给定区间内创建一系列均匀间隔的值。方法如下:

numpy.arange(start, stop, step, dtype=None)  

你需要先设置值所在的区间,这里为 [开始, 停止),你应该能发现这是一个半开半闭区间。然后,在设置step步长用于设置值之间的间隔。最后的可选参数dtype可以设置返回ndarray` 的值类型。

np.arange(1,100,2)

array([ 1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33,
35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, 61, 63, 65, 67,
69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95, 97, 99])

linspace 方法创建

linspace方法也可以像arange方法很像,创建数值有规律的数组。inspace用于在指定的区间内返回间隔均匀的值。其方法如下:

numpy.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None) 
	start:序列的起始值。
	stop:序列的结束值。
	num:生成的样本数。默认值为50。
	endpoint:布尔值,如果为真,则最后一个样本包含在序列内。
	retstep:布尔值,如果为真,返回间距。
	dtype:数组的类型。
np.linspace(-10,10,10)

array([-10. , -7.77777778, -5.55555556, -3.33333333,-1.11111111, 1.11111111, 3.33333333, 5.55555556,7.77777778, 10. ])

logspace 方法创建

logspace是线性生成,并且以什么为底

	start从几开始
	stop 到数字结尾
	num  生成多少个数
	base 表示的是底数 默认以10为底
np.logspace(1,10,10)

array([1.e+01, 1.e+02, 1.e+03, 1.e+04, 1.e+05, 1.e+06, 1.e+07, 1.e+08,
1.e+09, 1.e+10])

np.logspace(1,2,10)

array([ 10. , 12.91549665, 16.68100537, 21.5443469 ,27.82559402, 35.93813664, 46.41588834, 59.94842503,77.42636827, 100. ])

ones 方法创建

numpy.ones 用于快速创建数值全部为 1 的多维数组。其方法如下:

numpy.ones(shape, dtype=None, order='C')
	shape:用于指定数组形状,例如(1, 2)或 3。
	dtype:数据类型。
	order:{'C','F'},按行或列方式储存数组。
np.ones(shape=(5,4),dtype='int8')

array([[1, 1, 1, 1],
[1, 1, 1, 1],
[1, 1, 1, 1],
[1, 1, 1, 1],
[1, 1, 1, 1]], dtype=int8)

o.dtype

dtype(‘int8’)

zeros 方法创建

zeros 方法和上面的 ones 方法非常相似,不同的地方在于,这里全部填充为 0。zeros 方法和 ones 是一致的。

numpy.zeros(shape, dtype=None, order='C')
	shape:用于指定数组形状,例如(1, 2)或3。
	dtype:数据类型。
	order:{'C','F'},按行或列方式储存数组。
np.zeros(shape=(3,3),dtype='int8')

array([[0, 0, 0],
[0, 0, 0],
[0, 0, 0]], dtype=int8)

full方法创建

numpy.full用于创建一个自定义形状的数组,可以自己指定一个值,该值填满整个矩阵。

numpy.full(shape,fill_value=num)
np.full(shape=(3,3), fill_value=10)

array([[10, 10, 10],
[10, 10, 10],
[10, 10, 10]])

eye 方法创建

numpy.eye 用于创建一个二维数组,其特点是k 对角线上的值为 1,其余值全部为0。方法如下:

numpy.eye(N, M=None, k=0, dtype=<type 'float'>)  
	N:输出数组的行数。
	M:输出数组的列数。
	k:对角线索引:0(默认)是指主对角线,正值是指上对角线,负值是指下对角线。表示从下标第几个开始。
np.eye(3)

array([[1., 0., 0.],
[0., 1., 0.],
[0., 0., 1.]])

np.eye(4,M=3,k=1)

array([[0., 1., 0.],
[0., 0., 1.],
[0., 0., 0.],
[0., 0., 0.]])

np.eye(3,M=4,k=-2)

array([[0., 0., 0., 0.],
[0., 0., 0., 0.],
[1., 0., 0., 0.]])

diag 方法创建

对角矩阵,主对角线上有值

np.diag([1,2,3])

array([[1, 0, 0],
[0, 2, 0],
[0, 0, 3]])

整数型随机矩阵

生成随机的整数型矩阵

  np.random.randint(low=0,high=150,size=(5,4))
	low 表示的是最小值
	high 表示最大值
	size 是一个元组类型或整型
np.random.randint(1000,10000,size=(5,4))

array([[4978, 9324, 6563, 9781],
[7715, 1498, 2272, 1576],
[5791, 8365, 4297, 3114],
[3476, 7938, 6702, 2477],
[6193, 3482, 9470, 4883]])

生成随机的矩阵

np.random.randn(10,5)没有固定的参数,每多加一个数字,代表多真假一个维度
rand 和 random 的区别:random 需要 size来描述形状,而rand只需要我们直接给值,通过值的数量来确定形状

np.random.random(size=(456,730,3))
	size 表示形状 random随即生产的范围是0-1之间
np.random.random(size=(2,3,4))

array([[[0.44087042, 0.56201533, 0.29860639, 0.74863463],
[0.89053983, 0.90372709, 0.1974021 , 0.28676568],
[0.87047092, 0.5941074 , 0.55817556, 0.1172316 ]],
[[0.92110405, 0.11879152, 0.61405184, 0.17196971],
[0.97346584, 0.74209702, 0.3385801 , 0.49291098],
[0.03932628, 0.13211999, 0.20205492, 0.35373043]]])

np.random.rand(4,3,2)

array([[[8.70178786e-03, 4.77632471e-01],
[5.02853513e-01, 3.47265529e-01],
[8.62488951e-01, 7.05401236e-01]],

[[6.21816785e-01, 1.50235737e-01],
[8.84794680e-01, 3.02021777e-01],
[2.39958830e-01, 7.37170772e-01]],

[[5.35055675e-01, 7.08142187e-01],
[7.60646075e-02, 1.84738441e-01],
[9.05785332e-01, 3.03236650e-01]],

[[5.76716168e-04, 8.78046274e-01],
[4.67437551e-02, 8.89701572e-01],
[4.70559819e-01, 9.69439179e-02]]])

生成高斯分布矩阵

生成一个一维数组

np.random.normal(loc=170,scale=100,size=50)
	location 是定位的的值
	scale 是波动值
	size 是数据长度
normal=np.random.normal(loc=12500,scale=2500,size=10)
normal

array([13816.11988865, 10547.71512672, 13862.79314516, 13648.95445771,
12646.57164565, 9813.74235725, 10838.48063407, 11689.67990981,
13027.97184294, 18526.68967625])

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值