Numpy中生成数组的常用方法

1. np.array()

import numpy as np
## 下面两种结果相同
arr1 =np.array([1,2,3])
arr11 =np.array((1,2,3))

## 下面两种结果相同
arr2 =np.array([[1,2,3],[2,3,4]])
arr22 =np.array(((1,2,3),(2,3,4)))

#可通过reshape来改变形状
arr3 =np.array([[1,2,3],[2,3,4]]).reshape(3,2)

print(arr1)
print(arr11)
print(arr2)
print(arr22)
print(arr3)

[1 2 3]
[1 2 3]
[[1 2 3]
 [2 3 4]]
[[1 2 3]
 [2 3 4]]
[[1 2]
 [3 2]
 [3 4]]


2.np.arange()

import numpy as np

arr1 =np.arange(4)


arr2= np.arange(1,6,2)


arr3 =np.arange(12).reshape((3,4))

print(arr1)

print(arr2)

print(arr3)

[0 1 2 3]
[1 3 5]
[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]

3.ones/empty/zeros函数

ones/empty/zeros函数方法使用近似,下面以zeros函数为例

import numpy as np

arr1 = np.zeros(6,dtype=np.int32)

#以下两种方式结果相同
arr2 = np.zeros((2,3),dtype=np.int32)
arr3 = np.zeros(6,dtype=np.int32).reshape(2,3)

print(arr1)
print(arr2)
print(arr3)

4.np.random

np.random.rand():

其返回结果中的每一个元素是服从0~1均匀分布的随机样本值,前闭后开;
如果不指定,那么生成的是一个浮点型的数;如果指定一个数,那么生成的是一个numpy.ndarray类型的数组;如果指定两个数字,那么生成的是一个二维的numpy.ndarray类型的数组

np.random.random():

和上面np.random.rand函数几乎一模一样,唯一的区别是(2,3),以元组的形式;

np.random.randn()

返回的结果是服从均值为0,方差为1的标准正态分布,而不是局限在0-1之间,也可以为负值,基本同np.random.rand()

import numpy as np

arr1 = np.random.rand()
arr11 = np.random.random()
print(arr1)
print(arr11)

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

arr3 = np.random.rand(2,3)
arr33 = np.random.random((2,3))
print(arr3)
print(arr33)


# 以下是np.random.randn函数
arr4=np.random.randn()
arr5 =np.random.randn(2)
arr6=np.random.randn(2,3)
print(arr4)
print(arr5)
print(arr6)

0.5736311616541673
0.04652982548354134
[0.655061 0.134019]
[0.13199651 0.33791001]
[[0.39933954 0.41683012 0.077079  ] 
 [0.74220456 0.26096057 0.788995  ]]
[[0.86544624 0.70291938 0.62671325]
 [0.19132449 0.43554913 0.33147998]]
-2.014256955181612
[0.02856977 0.59193397]
[[ 0.9584476   0.45821351  1.24301107]
 [ 0.13390901 -1.49664702  0.49785627]]

np.random.randint(low,high,size,dtype)

返回结果:返回值是一个大小为size的数组,如果指定了low和high这两个参数,那么生成的元素值的范围为[low,high),不包括high;
如果不指定high这个参数,则生成的元素值的范围为[0,low)。如果不指定size这个参数,那么生成的元素值的个数只有一个。

import numpy as np

# 指定一个参数low
mat = np.random.randint(low=2)
print(mat)
 
# 指定low和high,生成一个[low,high)的元素值
mat = np.random.randint(low=1, high=8)
print(mat)
 
# 指定size大小,生成一个三行三列的二维数组,元素个数为3x3=9个
mat1 = np.random.randint(low=2, high=10, size=(3, 3))
# 指定size大小,生成一个[2,10),元素个数为3个的数组
mat2 = np.random.randint(2, 10, 3)
print(mat1)
print(mat2) 
mat = np.random.randint(low=2, high=10, size=(3, 3), dtype=np.uint8)
print(mat)

1
1
[[4 8 4]
 [7 7 5]
 [6 2 2]]
[3 8 2]
[[9 3 2]
 [8 3 7]
 [8 4 2]]

np.random.uniform(low,high,size)

uniform()可以生成服从指定范围内的均匀分布的元素。其返回值的元素类型为浮点型。需注意的是元素值的范围包含low,不包含high。

import numpy as np
# 指定一个参数low
mat = np.random.uniform()
print(mat)
 
# 指定low和high,生成一个[low,high)的元素值
mat = np.random.uniform(low=6, high=8)
print(mat)
 
# 指定size大小,生成一个两行三列的二维数组,元素个数为2x3=6个
mat = np.random.uniform(low=2, high=6, size=(2, 3))
print(mat)

0.19092554740670453
7.69760778806884
[[2.79287241 3.58444483 3.26800313]
 [4.9747663  4.18105176 2.03037405]]

np.linspace

np.linspace 是NumPy库中用于创建等间隔的数值序列的函数。其语法如下:

np.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)

参数含义如下:

start:序列的起始值。
stop:序列的结束值。
num:生成的样本数,默认为50。
endpoint:如果为True(默认值),则stop是最后一个样本。否则,不包括在内。如果endpoint为False,生成的样本数将为num。
retstep:如果为True,则返回(samples, step),其中step是样本之间的间距。
dtype:输出数组的数据类型。

示例:

import numpy as np
arr1 = np.linspace(1,10,5)
arr2 = np.linspace(1,10,6).reshape((2,3))
print(arr1)

print(arr2)

[ 1.    3.25  5.5   7.75 10.  ]
[[ 1.   2.8  4.6]
 [ 6.4  8.2 10. ]]

备注:如果想在特定范围内生成数据,可以采用np.random.randint或np.random.uniform方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值