python-数据分析-(3)numpy数组的创建

python-数据分析-(3)numpy数组的创建numpy数组的创建数组的创建以及常用操作一、特殊的创建数组importnumpyasnp1、arange起始位置,终止位置,步长arr3=np.arange(1,10,2)print(arr3

numpy数组的创建

数组的创建以及常用操作

一、特殊的创建数组

import numpy as np

1、 arange 起始位置,终止位置,步长
arr3 = np.arange(1, 10,2)
print(arr3)

[1 3 5 7 9]
2、 linspace 起始位置,终止位置,显示的个数

给出初始位置,差数,显示个数,求最后一个数
起始位置 + (个数-1)*(差数) = 最后一个数

# a1=8 d=-1 n=7
# # 8 + (7-1)*(-1) = 2
 arr5 = np.linspace(8, 2, 7)
 arr4 = np.linspace(1,10,5)
 print(arr4, arr5)
[ 1.    3.25  5.5   7.75 10.  ] [8. 7. 6. 5. 4. 3. 2.]
3、 logspce 等比数列

起始指数, 最后一个数的指数 显示的个数
start, stop, num=50, endpoint=True, base=10.0, dtype=None,axis=0):
起始数, 倍数, 显示个数

 # a1=3, q=9, n=6
 # 最后一个数 = a1*a1**(n-1) = 3 (11)
 # 得出底数为3, base = 3, ze logx3 = a > 第一个为 1, 最后一个 11, 显示个数6
arr6 = np.logspace(1,11,6,base=3)
print(arr6)
[3.00000e+00 2.70000e+01 2.43000e+02 2.18700e+03 1.96830e+04 1.77147e+05]
4、全一数组

np.ones

# arr7 = np.ones((3,4))
print(arr7)
[[1. 1. 1. 1.]
 [1. 1. 1. 1.]
 [1. 1. 1. 1.]]
5、全 0 数组

np.zeros

arr8 = np.zeros((3,4))
print(arr7, arr8)
[[0. 0. 0. 0.]
 [0. 0. 0. 0.]
 [0. 0. 0. 0.]]
6、单位数组 # 对角线为 1

np.eye

arr9 = np.eye(3)
print(arr9)
[[1. 0. 0.]
 [0. 1. 0.]
 [0. 0. 1.]]
7、对角数组

np.diag

arr10 = np.diag([1,2,3,4])
print(arr10)
[[1 0 0 0]
 [0 2 0 0]
 [0 0 3 0]
 [0 0 0 4]]
二、随机数组
1 随机数组 random 随机100个数,数在0-1之间, 一维数组

random.random

 arr11 = np.random.random(10)
 print(arr11)
[0.94291171 0.37437134 0.95882402 0.53468268 0.61535727 0.99573457
 0.40829533 0.54493658 0.26366464 0.30122991]
2 均匀分布: 每个区间内的随机数,出现的概率都均匀分布

random.rand

# random.rand
arr12 = np.random.rand(10)
print(arr12)
[0.54421722 0.88963632 0.55908979 0.75682079 0.33739974 0.06608583
 0.87322233 0.72741851 0.20770551 0.1719531 ]
3 正态分布: 在数轴中,会显示一个峰值,指定是数据出现的概率,峰值越高,概率则越高,临近0的位置概率越高

random.randn

# 有正 有负
arr13 = np.random.randn(50)
print(arr13)
[ 1.26533955 -1.78556978  0.93679018 -0.44488995  2.71992622  2.23053563
 -0.50636456  1.43736733  1.456863   -0.29957034  0.79827706  0.78054322
  0.62672284  1.16400739 -0.7550562  -1.95943291 -1.17037617  1.53813303
 -0.04651108 -0.763941   -0.62367491  0.69005622  1.11434205 -0.48368366
  0.49187281 -0.10056911 -0.8721509   0.66926024 -0.2262314  -0.20382128
 -1.60633907  1.08232747  0.9563421  -1.00991936 -0.15346309  0.80780588
 -2.30794637  1.16900935 -0.10164755 -0.4816431   1.44266502 -0.97043795
  1.50490985 -0.51082826 -1.84256456  0.80230763  0.56863096  2.22493269
 -0.53022144 -1.22730517]
4 随机整数的生成 最小值 最大值 显示的个数 不包含最大值

random.randint

arr14 = np.random.randint(2, 8,size =[4,4])
print(arr14)
[[3 2 5 7]
 [4 7 4 3]
 [2 3 7 4]
 [5 7 2 2]]
三、矩阵形态装换
1 重置数组结构 将一维数组,转换为二维数组

arr_1.reshape

arr_1 = np.arange(10)
print(arr_1)
arr_2 = arr_1.reshape((2, 5))
print(arr_2)
[0 1 2 3 4 5 6 7 8 9]
[[0 1 2 3 4]
 [5 6 7 8 9]]
2 ravel 展平数组 | flatten order=‘C’| ‘F’: 就是将二维数组,转换为一维数组
arr_3 = arr_2.ravel()
print(arr_3)
[0 1 2 3 4 5 6 7 8 9] 
3 flatten order=‘C’| ‘F’,将二维数组,转换为一维数组,可以指定
# flatten order='C' 按照一行进行展平,横向展平 order='F':按照列依次进行展平,纵向展平
arr_4 = arr_2.flatten('C')
arr_5 = arr_2.flatten('F')
print(arr_4, arr_5)
[0 1 2 3 4 5 6 7 8 9] [0 5 1 6 2 7 3 8 4 9]
四、堆叠的方法: 将两个转换为一个
1 横向堆叠,需要行数一样, 参数为元组

np.hstack

arr_6 = np.zeros((3,4))
arr_7 = np.ones((3,4))
print(arr_6, arr_7)
[[0. 0. 0. 0.]
 [0. 0. 0. 0.]
 [0. 0. 0. 0.]]
  [[1. 1. 1. 1.]
 [1. 1. 1. 1.]
 [1. 1. 1. 1.]]
# # 横向堆叠,需要行数一样, 参数为元组
arr_8 = np.hstack((arr_6, arr_7))
print(arr_8)
[[0. 0. 0. 0. 1. 1. 1. 1.]
 [0. 0. 0. 0. 1. 1. 1. 1.]
 [0. 0. 0. 0. 1. 1. 1. 1.]]
2 纵向堆叠,需要列数相同

np.vstack

 arr_9 = np.vstack((arr_6, arr_7))
 print(arr_9)
 [[0. 0. 0. 0.]
 [0. 0. 0. 0.]
 [0. 0. 0. 0.]
 [1. 1. 1. 1.]
 [1. 1. 1. 1.]
 [1. 1. 1. 1.]]
3 数组的合并,拼接 concatenate
 # axis=0 :表示的纵轴,0.1.2.3 axis=1 表示的横轴, 0.1.2.3
 arr_10 = np.concatenate((arr_6, arr_7), axis=1)
 print(arr_10)
[[0. 0. 0. 0. 1. 1. 1. 1.]
 [0. 0. 0. 0. 1. 1. 1. 1.]
 [0. 0. 0. 0. 1. 1. 1. 1.]]
4 concatenate 与 hstack vstack 的区别

当数组为一维数组时, 只有一个axis=0 当前有两个一维数组堆叠,使用concatenate,需要考虑轴方向:1/0,
但是一维数组默认只有0,使用concatenate进行axi=0想要纵向堆叠,会得不到想要的结果,会得出的横向堆叠的情况
hstack | vstack 不考虑轴方向,直接将两个数组堆叠,并且 vstack会将一维数组转换为二维数组,再进行堆叠

 ar1 = np.array([1,2,3,4])
 ar2 = np.array([0,0,2,1])
 ar3 = np.concatenate((ar1, ar2), axis=0)
 ar4 = np.vstack((ar1,ar2))
 print(ar3, ar4)
 [1 2 3 4 0 0 2 1] 
 [[1 2 3 4]
 [0 0 2 1]]
五、数组的分割, 对行(列)进行分割
1 数组的分割,横向分割,列的索引进行分割, 从 0 开始, 左开右闭原则 :2 2:4 4:7
ar5 = np.hsplit(arr_10, 4)
ar6 = np.hsplit(arr_10, np.array([2, 4, 7]))
ar7 = np.hsplit(arr_10, np.array([4,6,7]))
print(ar6)
[array([[0., 0.],
       [0., 0.],
       [0., 0.]]), array([[0., 0.],
      					 [0., 0.],
       				   	 [0., 0.]]), array([[1., 1., 1.],
       										[1., 1., 1.],
      										 [1., 1., 1.]]), array([[1.],
															       [1.],
															       [1.]])]
2 数组的分割,纵向分割

参数中直接加数字,就是将数组,平均分割为 2 份
np.array([2, 4, 7],指定索引行进行分割

ar5 = np.hsplit(arr_10, 4)
ar6 = np.hsplit(arr_10, np.array([2, 4, 7]))
ar7 = np.hsplit(arr_10, np.array([4,6,7]))
print(ar6)
[array([[0., 0., 0., 0.],
       [0., 0., 0., 0.],
       [0., 0., 0., 0.]]), array([[1., 1., 1., 1.],
       [1., 1., 1., 1.],
       [1., 1., 1., 1.]])]
[array([[0., 0., 0., 0.],
		 [0., 0., 0., 0.]]), array([[0., 0., 0., 0.],
		 [1., 1., 1., 1.]]), array([[1., 1., 1., 1.],
		 [1., 1., 1., 1.]]), array([], shape=(0, 4), dtype=float64)]
3 分割和拼接,对轴进行分割,需要注意轴的问题,如果是一维数组,就没有axis = 1
ar9 = np.split(arr_9, 3, axis=0)
print(ar9)
[array([[0., 0., 0., 0.],
       [0., 0., 0., 0.]]), array([[0., 0., 0., 0.],
       [1., 1., 1., 1.]]), array([[1., 1., 1., 1.],
       [1., 1., 1., 1.]])]

今天的文章python-数据分析-(3)numpy数组的创建分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/65131.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注