Numpy学习——创建ndarray的方法

1.创建ndarray的方法

|------------------|-------------------------------------------------------------------|
| 方法 | 描述 |
| 基础构造 | np.array |
| 基础构造 | np.copy:深拷贝,复制另一个数组,成为一个新数组,修改后不改变copy的 |
| 预定义形状填充 | np.zeros(shape):创建shape形状的全为0的数组 |
| 预定义形状填充 | np.ones(shape):创建shape形状全为1的数组 |
| 预定义形状填充 | np.empty(shape):创建一个未初始化的数组 |
| 预定义形状填充 | np.full(shape,num):创建一个shape形状的元素全为num的数组 |
| 基于数值范围生成 | np.arange(start,end,step):范围[start,end),step为间隔的长短 |
| 基于数值范围生成 | np.linspace(start,end,num):范围[start,end],num表示将范围分成num-1段, 取分段点 |
| 基于数值范围生成 | np.logspace(start,end,num,base):取base^a,a为np.linspace生成的点 |
| 特殊矩阵生成 | np.eye(shape):生成主对角线为1,其余为0的矩阵 |
| 特殊矩阵生成 | np.diag(对边元素):生成主对角线有数,其余为0的矩阵 |
| 随机数组生成 np.random | np.random.rand(shape):生成0-1之间的数 |
| 随机数组生成 np.random | np.random.uniform(start,end,shape):生成start到end之间的随机浮点数 |
| 随机数组生成 np.random | np.random.randint(start,end,shape):生成start-end范围之间的随机整数 |
| 随机数组生成 np.random | np.random.rand(shape):生成正态分布的随机数,大概率在(-3,3)之间, 取到0附近的概率最大 |
| 随机数组生成 np.random | np.random.seed():随机种子 |

2.示例

1.基础构造

使用np.array先构造一个数组,再使用copy拷贝,这个是深拷贝,copy的数组进行修改后不影响原数组。

python 复制代码
import numpy as np
#####1.基础构造:#######
#array
list1=[1,2,3]
arr=np.array(list1,dtype=np.float64)
print(arr)
print(arr.ndim)
#copy,复制
arr_copy=np.copy(arr)#不是一个数组了
print(arr_copy)
arr_copy[0]=8
print(arr,arr_copy)

2.预定义形状填充

注:预定义填充还有xxx_like这一功能:xxx代表预定义填充函数功能,like表示copy其他数组的形状。

python 复制代码
import numpy as np
######################2.预定义形状填充###############
#zeros,全0数组,默认小数
arr0=np.zeros((2,3))
#创建1维的数组
arr0=np.zeros((3,))
print(arr0)
#ones,全1数组
arr1=np.ones((2,3))
print(arr1)
#empty,未初始化
arr_empty=np.empty((4,3))
print(arr_empty)
#full,填满某个数,输入形状和要填的数
arr_full=np.full((2,3),5)
print(arr_full)
#zeros_like,表示全为0,形状copy别人的,同理,有ones_like,empty_like,full_like
arr_like=np.zeros_like(arr_empty)
print(arr_like)

3.基于数值范围生成

arange其实和linspace功能差不多,arange是取一个数,再走step步,再取数;linspace是通过这个取的范围,先化成num-1段,取这num个端点;logspace是在linspace基础上取base(底数)的端点次方。

python 复制代码
import numpy as np
#####################3.基于数值范围生成#################
#arange(start,end,step),[start,end)
arr_arange=np.arange(2,11,2)
print(arr_arange)
#linspace(start,end,num),分成num个点,num-1段
arr_linspace=np.linspace(0,10,6)
print(arr_linspace)
#logspace(start,end,num,base),分成num个点,base是对数的底
arr_log=np.logspace(1,3,3,base=2)
#输出2,4,8(取3个点:1,2,3,然后求2的n次方)
print(arr_log)

4.特殊矩阵生成

eye是令主对角线元素为1,其余为0;diag就是填充主对角线上的数,其余都为0

python 复制代码
import numpy as np
######################4.特殊矩阵生成##################
#eye(m,n),主对角线是1,其余为0
arr_eye=np.eye(6,5)
print(arr_eye)
#diag,对角矩阵,括号里面填对边的数值
arr_diag=np.diag([1,2,3,4,5])
print(arr_diag)

5.随机数生成

你会发现,使用随机种子之后,随机的数组不会再改变

python 复制代码
import numpy as np
######################5.随机数值生成##################
#random.rand,生成0到1之间的随机浮点数
arr_01=np.random.rand(2,3)
print(arr_01)
#random.uniform(start,end,(m,n)),生成指定范围区间的随机浮点数
arr_uniform=np.random.uniform(3,6,(2,3))
print(arr_uniform)
#randint,生成指定范围的随机整数
arr_int=np.random.randint(3,10,(2,3))
print(arr_int)
#randn,正态分布,两边小,中间大,大部分是(-3,3)之间的数,取到0附近概率最大
arrn=np.random.randn(2,3)
print(arrn)
#seed:种子
np.random.seed(20)
arr_intseed=np.random.randint(1,10,(2,5))
print(arr_intseed)
相关推荐
AI视觉网奇7 分钟前
3d数字人 ue blender 绑定衣服对齐 2026
学习·ue5
Nan_Shu_61412 分钟前
学习: Blender 基础篇
学习·blender
奶茶精Gaaa1 小时前
工具分享--json在线转换工具
学习
wdfk_prog1 小时前
[Linux]学习笔记系列 -- [drivers][I2C]I2C
linux·笔记·学习
盐焗西兰花2 小时前
鸿蒙学习实战之路-Reader Kit自定义字体最佳实践
学习·华为·harmonyos
近津薪荼2 小时前
dfs专题5——(二叉搜索树中第 K 小的元素)
c++·学习·算法·深度优先
敏叔V5873 小时前
AI智能体的工具学习进阶:零样本API理解与调用
人工智能·学习
2501_941864963 小时前
科学方法论破解学习时间堆砌误区
学习
1024小神4 小时前
SVG标签中path路径参数学习
学习
浅念-5 小时前
C++入门(2)
开发语言·c++·经验分享·笔记·学习