数据分析(1/3)——Numpy数组基础学习笔记

Numpy

复制代码
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline

一.numpy

1.多维性

复制代码
a=np.array(5)
print(a)

5

print('a的维度是:',a.ndim)
a的维度是: 0
a=np.array([1,2,3,4,5])
print(a)
print('a的维度是:',a.ndim)

[1 2 3 4 5]

a的维度是: 1

a=np.array([[1,2,3,4,5],[6,7,8,9,10]])
print(a)
print('a的维度是:',a.ndim)

[[ 1  2  3  4  5]
 [ 6  7  8  9 10]]
a的维度是: 2

2.同质性

复制代码
a=np.array([1,'array'])#不同数据类型被强制转换成相同数据类型
print(a)

['1' 'array']

同质性是指这个数组里面的元素要是一个类型,但你发现我写的是整型1和字符串型的array,为什么能打印而不报错?仔细看会发现打印结果的1并不是整型,它被添加了引号改成了字符串类型

复制代码
a=np.array([1,2.5])#不同数据类型被强制转换成相同数据类型
print(a)

[1.  2.5]

1被转换成浮点型

3.ndarray的属性

(1)shape(数据的形状):行数和列数(或更高维度的尺寸)

使用事例:a.shape

复制代码
a=np.array([1,2,3])
print(a)
print('数组的形状:',a.shape)

[1 2 3]
数组的形状: (3,)

一维数组shape=(3,):代表只有长度为 3 的轴,没有区分行 / 列,属于一维线性数组

复制代码
a=np.array([[1,2,3],[4,5,6],[7,8,9]])
print(a)
print('数组的形状:',a.shape)

[[1 2 3]
 [4 5 6]
 [7 8 9]]
数组的形状: (3, 3)
(2)ndim(数据的维度):数组是几维的(1维是标量,2维是向量,3维及以上是张量或者叫多维数组)

使用事例:a.ndim

复制代码
a1=np.array(1)
print(a1)
print('a1的维度是:',a1.ndim)
print('\n')
a2=np.array([1,2,3,4,5])
print(a2)
print('a2的维度是:',a2.ndim)
print('\n')
a3=np.array([[1,2,3,4,5],[6,7,8,9,10]])
print(a3)
print('a3的维度是:',a3.ndim)

1
a1的维度是: 0


[1 2 3 4 5]
a2的维度是: 1


[[ 1  2  3  4  5]
 [ 6  7  8  9 10]]
a3的维度是: 2
(3)size(总元素个数):数组中所有元素的总数。

使用事例:a.size

复制代码
a1=np.array(1)
print(a1)
print('a1的元素个数是:',a1.size)
print('\n')
a2=np.array([1,2,3,4,5])
print(a2)
print('a2的元素个数是:',a2.size)
print('\n')
a3=np.array([[1,2,3,4,5],[6,7,8,9,10]])
print(a3)
print('a3的元素个数是:',a3.size)

1
a1的元素个数是: 1


[1 2 3 4 5]
a2的元素个数是: 5


[[ 1  2  3  4  5]
 [ 6  7  8  9 10]]
a3的元素个数是: 10
(4)dtype(元素类型):数组中元素的类型(整型,浮点型等)。

使用事例:a.dtype

复制代码
a1=np.array(1)
print(a1)
print('a1的元素类型是:',a1.dtype)
print('\n')
a2=np.array([1.2,2.3,6.7])
print(a2)
print('a2的元素类型是:',a2.dtype)
print('\n')
a3=np.array([1,2.8])
print(a3)
print('a3的元素类型是:',a3.dtype)

1
a1的元素类型是: int64


[1.2 2.3 6.7]
a2的元素类型是: float64


[1.  2.8]
a3的元素类型是: float64
(5)T(转置):行变列,列变行。

使用事例:a.T

复制代码
a1=np.array(1)
print(a1)
print('a1的倒置结果是:',a1.T)
print('\n')
a2=np.array([1,2,3,4,5])
print(a2)
print('a2的倒置结果是:',a2.T)
print('\n')
a3=np.array([[1,2,3,4,5],[6,7,8,9,10]])
print(a3)
print('a3的倒置结果是:',a3.T)

1
a1的倒置结果是: 1


[1 2 3 4 5]
a2的倒置结果是: [1 2 3 4 5]


[[ 1  2  3  4  5]
 [ 6  7  8  9 10]]
a3的倒置结果是: [[ 1  6]
 [ 2  7]
 [ 3  8]
 [ 4  9]
 [ 5 10]]

最少2维才能发生倒置,但这个也不常用

4.ndarray的创建

(1)基础构造
复制代码
#基础的创建方法
#直接创建
a1=np.array([1,2,3,4,5])
print(a1)
print('\n')
#利用list
list1=[6,7,8,9,10]
#还可以利用dtype指定数据类型
a2=np.array(list1,dtype=np.float64)
print(a2)

[1 2 3 4 5]


[ 6.  7.  8.  9. 10.]

#利用copy
a3=np.copy(a1)
print(a3)
a3[0]=8#改了值也不会影响原本的a1,只是拷贝数据过来了一份
print(a3)
print(a1)

[1 2 3 4 5]
[8 2 3 4 5]
[1 2 3 4 5]
(2)预定义形状(直接给定数据形状)

可以让数组全是一个值,但全0,全1,未初始化三种方式会默认数据是浮点型,想要整型可以指定。只有自己设定固定值,会默认是整型,想要浮点型可以指定

复制代码
#全0
a1=np.zeros((2,))
print(a1)
print('\n')
a2=np.zeros((2,3))
print(a2)
print(a2.dtype)#会默认是浮点型,如果想要整型可以指定
print('\n')
a3=np.zeros((2,3),dtype=int)#指定整型
print(a3)
print(a3.dtype)

[0. 0.]


[[0. 0. 0.]
 [0. 0. 0.]]
float64


[[0 0 0]
 [0 0 0]]
int64

#全1
a1=np.ones((2,))
print(a1)
print('\n')
a2=np.ones((2,3))
print(a2)
print(a2.dtype)#会默认是浮点型,如果想要整型可以指定
print('\n')
a3=np.ones((2,3),dtype=int)#指定整型
print(a3)
print(a3.dtype)

[1. 1.]


[[1. 1. 1.]
 [1. 1. 1.]]
float64


[[1 1 1]
 [1 1 1]]
int64

#未初始化,给随机值
a1=np.empty((2,))
print(a1)
print('\n')
a2=np.empty((2,3))
print(a2)
print(a2.dtype)#会默认是浮点型,如果想要整型可以指定
print('\n')
a3=np.empty((2,3),dtype=int)#指定整型
print(a3)
print(a3.dtype)

[1. 1.]


[[0. 0. 0.]
 [0. 0. 0.]]
float64


[[0 0 0]
 [0 0 0]]
int64

#可自己设立固定值
a1=np.full((2,),2026)
print(a1)
print('\n')
a2=np.full((2,3),7)
print(a2)
print(a2.dtype)#会默认是整型,如果想要浮点型可以指定
print('\n')
a3=np.full((2,3),20,dtype=np.float64)#指定浮点型
print(a3)
print(a3.dtype)

[2026 2026]


[[7 7 7]
 [7 7 7]]
int64


[[20. 20. 20.]
 [20. 20. 20.]]
float64

#小特色用法
a1=np.full((2,),2026)
print(a1)
print('\n')
a2=np.zeros_like(a1)#意思是a2的形状要跟a1一样,但是值全设为0
print(a2)
print('\n')
a3=np.ones_like(a1)
print(a3)
print('\n')
a4=np.empty_like(a1)
print(a4)
print('\n')
a5=np.full_like(a1,2025)
print(a5)
print('\n')

[2026 2026]


[0 0]


[1 1]


[1 1]


[2025 2025]
(3)等差数列
复制代码
a1=np.arange(2,10,2)#start,end,step,是前闭后开
print(a1)

[2 4 6 8]
(4)等间隔数列
复制代码
a1=np.linspace(1,10,5)#要求1到10有5个数字,包括1和10,也就是分成4个间隔,每个间隔都是2.25
print(a1)
print('\n')
a2=a1=np.linspace(1,10,2,dtype=int)
print(a2)

[ 1.    3.25  5.5   7.75 10.  ]


[ 1 10]
(5)对数间隔数列
复制代码
a1=np.logspace(0,4,2,base=2)#要求0到4有2个数字,包括0和4,但是不是打印出0和4,0和4这里是当对数的,也就是对数函数等式右边,我们会打印出它的真数,这个base是以哪个数为底数的意思,这里应该是log以2为底
print(a1)
print('\n')
a2=np.logspace(0,4,3,base=2)
print(a2)

[ 1. 16.]


[ 1.  4. 16.]

其实是分了两步,先用等间隔把数分好,然后再进行运算,得到真数(对数形式的一部分,忘了就搜一下)

(6)特殊矩阵构造
复制代码
#单位矩阵:主对角线上的数字为1,其他数字为0
a1=np.eye(3,dtype=int)
print(a1)

[[1 0 0]
 [0 1 0]
 [0 0 1]]

#对角矩阵:主对角线上的元素不为0,其他数字为0
a1=np.diag([1,2,3,4,5])#这里是给主对角线赋值
print(a1)

[[1 0 0 0 0]
 [0 2 0 0 0]
 [0 0 3 0 0]
 [0 0 0 4 0]
 [0 0 0 0 5]]
(7)随机数组的生成
复制代码
#生成0到1之间的随机浮点数(均匀分布)
a1=np.random.rand(2,3)#括号里面是写你要的数组形状
print(a1)#每次生成的数都是随机的

[[0.51127308 0.31334984 0.63495631]
 [0.31835499 0.46780483 0.39191956]]

#生成指定范围区间的随机浮点数(均匀分布)
a1=np.random.uniform(3,6,(2,3))#生成3到6的随机浮点数
print(a1)

[[5.17774035 3.74240964 3.59487708]
 [3.77020806 4.0636745  3.45617473]]

#生成指定范围区间的随机整数(均匀分布)
a1=np.random.randint(3,30,(2,3))#生成3到6的随机整数
print(a1)

[[ 5 13 10]
 [19 23 20]]

#生成随机数列(正态分布)
#两边小,中间大
a1=np.random.randn(2,3)
print(a1)

[[ 1.50156707 -0.39777235 -0.98780874]
 [-0.86460356 -0.62973287 -0.57048801]]

#设置随机种子
#这个种子值,每个种子值都对应了一个随机数组,是固定的,上面的随机你会发现每次运行结果都会不一样,但设定了种子值,这个随机只会运行出与种子值配套的结果,你换个电脑,只要输入相同的下面代码,结果也是一样
np.random.seed(20)
a1=np.random.randint(1,10,(2,5))
print(a1)
print('\n')
np.random.seed(200)
a2=np.random.randint(1,10,(2,5))
print(a2)

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


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

5.ndarray的数据类型

布尔类型bool

整数类型int unit(无符号)

浮点数float

复数complex

(1)布尔类型
复制代码
a1=np.array([1,0,3,9,0],dtype='bool')#0输出False,非0输出True
print(a1)
print('\n')

[ True False  True  True False]
(2)整型
复制代码
a1=np.array([1,0,3,9,0])
print(a1)
print('\n')

[1 0 3 9 0]
(3)浮点型
复制代码
a1=np.array([1.6,3.9,9.8])
print(a1)

[1.6 3.9 9.8]
(4)复数型

6.索引与切片

(1)一维数组
复制代码
a1=np.random.randint(1,100,20)
print(a1)

[86 25  8 23 55 78 17 71 36 32 33 46 60 46 62 21 86  1  4 56]

print(a1[10])
print('\n')
print(a1[:])#全打印
print('\n')
print(a1[2:5])#打印下标2,3,4
print('\n')
print(a1[slice(2,15,3)])#打印下标2,5,8,11,14
print('\n')
print(a1[(a1>10)&(a1<70)])#打印大于10小于70的数

33


[86 25  8 23 55 78 17 71 36 32 33 46 60 46 62 21 86  1  4 56]


[ 8 23 55]


[ 8 78 36 46 62]


[25 23 55 17 36 32 33 46 60 46 62 21 56]
(2)二维数组
复制代码
a1=np.random.randint(1,100,(4,8))
print(a1)

[[96 57  4 34 73  1 53 91]
 [62 71 79 77 59 69 63 53]
 [ 7 83 97 28 69 65 90 69]
 [51 95 98 30 89 23  8 34]]

print(a1[1,3])
print('\n')
print(a1[1,2:5])#取第一行,第二列到第四列的数据
print('\n')
print(a1[2][   a1[2] >   50])#取第二行大于50的数
print('\n')
print(a1[:][a1>50])#取所有大于50的数
print('\n')
print(a1[:,3])#取第三列的数据

77


[79 77 59]


[83 97 69 65 90 69]


[96 57 73 53 91 62 71 79 77 59 69 63 53 83 97 69 65 90 69 51 95 98 89]


[34 77 28 30]

7.ndarray的运算

(1)同维度同形状运算
复制代码
#一维与一维
a=np.array([1,2,3,4,5])
b=np.array([6,7,8,9,10])
print(a+b)#两两对应加上,只有在numpy可以这样写,你要是在python原生语法里面写,这个+代表的是拼接
print('\n')
print(a-b)
print('\n')
print(a*b)
print('\n')
print(a/b)
print('\n')
print(a**2)

[ 7  9 11 13 15]


[-5 -5 -5 -5 -5]


[ 6 14 24 36 50]


[0.16666667 0.28571429 0.375      0.44444444 0.5       ]


[ 1  4  9 16 25]

#二维与二维
a=np.array([[1,2,3],[4,5,6],[7,8,9]])
b=np.array([[4,5,6],[7,8,9],[1,2,3]])
print(a+b)#两两对应加上
print('\n')
print(a-b)
print('\n')
print(a*b)
print('\n')
print(a/b)
print('\n')
print(a**2)

[[ 5  7  9]
 [11 13 15]
 [ 8 10 12]]


[[-3 -3 -3]
 [-3 -3 -3]
 [ 6  6  6]]


[[ 4 10 18]
 [28 40 54]
 [ 7 16 27]]


[[0.25       0.4        0.5       ]
 [0.57142857 0.625      0.66666667]
 [7.         4.         3.        ]]


[[ 1  4  9]
 [16 25 36]
 [49 64 81]]
(2)不同维度不同形状
复制代码
#不同维度和标量
a=np.array([1,2,3,4,5])
print(a+3)
print('\n')
print(a-3)
print('\n')
print(a*3)
print('\n')
print(a/3)

[4 5 6 7 8]


[-2 -1  0  1  2]


[ 3  6  9 12 15]


[0.33333333 0.66666667 1.         1.33333333 1.66666667]

#不同维度和不同形状会用到广播机制,但广播机制的前提是前面的数据列数要等于后面数据的行数,不然无法实现。广播机制是将它们重复补全,补成同一形状
a=np.array([1,2,3])#1行3列
b=np.array([[4],[5],[6]])#3行1列
'''
a原来是
1 2 3
a被补成
1 2 3
1 2 3
1 2 3
***********
b原来是
4
5
6
b被补成
4 5 6
4 5 6
4 5 6
'''
print(a+b)
print('\n')
print(a-b)
print('\n')
print(a*b)
print('\n')
print(a/b)

(3,)
[[5 6 7]
 [6 7 8]
 [7 8 9]]


[[-3 -2 -1]
 [-4 -3 -2]
 [-5 -4 -3]]


[[ 4  8 12]
 [ 5 10 15]
 [ 6 12 18]]


[[0.25       0.5        0.75      ]
 [0.2        0.4        0.6       ]
 [0.16666667 0.33333333 0.5       ]]
(3)矩阵的运算
复制代码
a=np.array([[1,2,3],[4,5,6],[7,8,9]])
b=np.array([[4,5,6],[7,8,9],[1,2,3]])
'''
a数据
1 2 3
4 5 6
7 8 9
*******
b数据
4 5 6
7 8 9
1 2 3
*******
第一行第一列这个数的计算结果怎么得来的
1*4+2*7+3*1=21,拿a的第一行乘b的第一列,挨个相加
'''
print(a @ b)#运算符是@,跟线性代数有关知识

[[ 21  27  33]
 [ 57  72  87]
 [ 93 117 141]]

8.基本函数

(1)计算平方根
复制代码
print(np.sqrt(9))#返回浮点数类型数据
print('\n')
print(np.sqrt([1,4,9]))
print('\n')
a=np.array([1,4,9])
print(np.sqrt(a))

3.0


[1. 2. 3.]


[1. 2. 3.]
(2)计算指数
复制代码
print(np.exp(0))  #是以e为底,e^x
print('\n')
print(np.exp(1))

1.0


2.718281828459045
(3)计算自然对数
复制代码
print(np.log(2.71))  #是以e为底,lnx
print('\n')
print(np.log(1))

0.9969486348916096


0.0
(4)计算正余弦
复制代码
print(np.sin(np.pi/2))#np.pi是Π,180°的意思
print('\n')
print(np.cos(np.pi))

1.0


-1.0
(5)计算a的b次幂
复制代码
print(np.power(2,3))
print('\n')
a=np.array([1,2,3,4,5])
print(np.power(a,3))

8


[  1   8  27  64 125]
(6)四舍五入
复制代码
print(np.round([3.2,4.6,8.5,8.51]))#跟纯数学有点区别8.5被舍去,但8.51不会

[3. 5. 8. 9.]
(7)向上向下取整
复制代码
a=np.array([1.6,25.1,81.7])
print(np.ceil(a))#向上
print('\n')
print(np.floor(a))#向下

[ 2. 26. 82.]


[ 1. 25. 81.]
(8)检测缺失值
复制代码
np.isnan([1,2,np.nan,3])#第三个数缺失

array([False, False,  True, False])

9.统计函数

复制代码
求和,计算平均值,计算中位数,标准差,方差

查找最大值和最小值

计算分位数,累计和,累积差

a=np.random.randint(1,20,8)
print(a)

[14 19  7  6 12 11 15  2]

#求和
print(np.sum(a))
print('\n')
print(np.sum([1,2,3]))

86


6

#计算平均值
print(np.mean(a))
print('\n')
print(np.mean([1,2,3]))

10.75


2.0

#计算中位数,会先把元素按升序排好,偶数个元素取中间元素两个相加除以2
print(a)
print('\n')
print(np.median(a))
print('\n')
print(np.median([1,2,3]))

[14 19  7  6 12 11 15  2]


11.5


2.0

#计算方差和标准差
#1 2 3平均值为2,方差等于((1-2)^2+(2-2)^2+(3-2)^2)/3,标准差是将方差开平方根
print(a)
print('\n')
print(np.var([1,2,3]))
print('\n')
print(np.std([1,2,3]))
print('\n')
print(np.var(a))
print('\n')
print(np.std(a))

[14 19  7  6 12 11 15  2]


0.6666666666666666


0.816496580927726


26.4375


5.141740950300783

#计算最大值和最小值
print(a)
print('\n')
print(np.max(a))
print('\n')
print(np.min(a))
print('\n')
print(np.max(a),np.argmax(a))#把最大值的下标也能打出来

[14 19  7  6 12 11 15  2]


19


2


19 1

#查找分位数,一样会先排好序再找,0代表0%的数也就是第一个,100代表100%的数也就是最后一个
print(a)
print('\n')
print(np.percentile(a,0))
print('\n')
print(np.percentile(a,25))#有25%的数会比6.75小
'''
怎么算出6.75的,首先排好序的数据为2 6 7 11 12 14 15 19
八个数中间有七段,7*0.25=1.75,只取小数部分0.75
会落在第二个段,也就是(7-6)*0.75+6=6.75
'''
print('\n')
print(np.percentile(a,50))
print('\n')
print(np.percentile(a,75))
print('\n')
print(np.percentile(a,100))

[14 19  7  6 12 11 15  2]


2.0


6.75


11.5


14.25


19.0

#累积和,累积积
arr=np.array([1,2,3])
print(np.sum(arr))
print('\n')
print(np.cumsum(arr))#输出的数组第二个数等于输入的第一个数和第二个相加,输出的第三个数等于输入的三个数相加
print('\n')
print(np.cumprod(arr))

6


[1 3 6]


[1 2 6]

10.比较函数

复制代码
比较是否大于,小于,等于

逻辑与,或,非

检查数组中是否有一个True,是否所有的都为True,自定义条件

#是否大于
print(np.greater([3,4,5,6,7],4))#是否大于4
print('\n')
#是否小于
print(np.less([3, 4, 5, 6, 7], 4))
print('\n')
#是否等于
print(np.equal([3, 4, 5, 6, 7], 4))
print('\n')
print(np.equal([3, 4, 5],[4,4,4]))#不同维度不同形状也能用广播机制

[False False  True  True  True]


[ True False False False False]


[False  True False False False]


[False  True False]

#逻辑运算
print(np.logical_and([1,0],[1,1]))#只有两个数都非0就会返回True
print('\n')
print(np.logical_or([1,0],[0,1]))
print('\n')
print(np.logical_not([1,0]))#变成[0,1]
[ True False]


[ True  True]


[False  True]

#检查元素是否至少有一个元素为True,也就是看有没有一个元素是非0的,有返回True,都是0返回False
print(np.any([0,0]))
print('\n')
print(np.any([0,1]))
print('\n')
#检查是否全部元素都为True
print(np.all([1,1]))
print('\n')
print(np.all([0,1]))
print('\n')

False


True


True


False

#自定义条件,where(条件,符合条件才能进来选,不符合条件才能进来选),可以很好进行分类
a=np.array([1,2,3,4,5])
b=np.array([6,7,8,9,10])
print(np.where(a>3,a,0))
print('\n')
print(np.where(a<3,a,0))
print('\n')
print(np.where(a>3,a,b))

[0 0 0 4 5]


[1 2 0 0 0]


[6 7 8 4 5]

#例子说明:学生分数分类
score=np.random.randint(50,101,20)
print(score)
print('\n')
print(np.where(score>=60,'及格','不及格'))
``
[95 65 67 79 99 58 50 77 57 86 79 88 96 82 93 73 75 51 81 70]


['及格' '及格' '及格' '及格' '及格' '不及格' '不及格' '及格' '不及格' '及格' '及格' '及格' '及格' '及格'
 '及格' '及格' '及格' '不及格' '及格' '及格']

#还可以嵌套
print(np.where(
   score<60,'不及格',np.where(score<80,'良好','优秀')
)
)

['优秀' '良好' '良好' '良好' '优秀' '不及格' '不及格' '良好' '不及格' '优秀' '良好' '优秀' '优秀' '优秀'
 '优秀' '良好' '良好' '不及格' '优秀' '良好']

#或者你用不惯嵌套也可以用select,default是必须要加的
print(np.select([score>80,(score>=60) & (score<=80),score<60],['优秀','良好','不及格'],default='未知'))

['优秀' '良好' '良好' '良好' '优秀' '不及格' '不及格' '良好' '不及格' '优秀' '良好' '优秀' '优秀' '优秀'
 '优秀' '良好' '良好' '不及格' '优秀' '良好']

11.排序函数

复制代码
np.random.seed(0)
a=np.random.randint(1,100,20)
print(a)
print('\n')
print(np.sort(a))#不会改变原数组
print(np.argsort(a))#打印下标
print('\n')
print(a)
print('\n')
a.sort()#会改变原数组
print(a)

[45 48 65 68 68 10 84 22 37 88 71 89 89 13 59 66 40 88 47 89]


[10 13 22 37 40 45 47 48 59 65 66 68 68 71 84 88 88 89 89 89]
[ 5 13  7  8 16  0 18  1 14  2 15  3  4 10  6  9 17 11 12 19]


[45 48 65 68 68 10 84 22 37 88 71 89 89 13 59 66 40 88 47 89]


[10 13 22 37 40 45 47 48 59 65 66 68 68 71 84 88 88 89 89 89]

12.去重函数

复制代码
np.random.seed(0)
a=np.random.randint(1,100,20)
print(a)
print('\n')
print(np.unique(a))#去掉重复元素,并且还排好序

[45 48 65 68 68 10 84 22 37 88 71 89 89 13 59 66 40 88 47 89]


[10 13 22 37 40 45 47 48 59 65 66 68 71 84 88 89]

13.数组拼接

复制代码
a1=np.array([1,2,3,4,5])
a2=np.array([6,7,8,9,10])
print(a1+a2)#只是相加
print('\n')
print(np.concatenate((a1,a2)))

[ 7  9 11 13 15]


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

14.数组的分割

复制代码
a1=np.array([1,2,3,4,5,6])
print(np.split(a1,2))#要保证是等分的
print('\n')
print(np.split(a1,[1,3]))#不均匀分割法,传下标作为分割点,在下标前面切一刀

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


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

15.调整数组形状

复制代码
np.random.seed(0)
a=np.random.randint(1,100,20)
print(a)
print('\n')
print(np.reshape(a,[5,4]))#一定要符合元素个数

[45 48 65 68 68 10 84 22 37 88 71 89 89 13 59 66 40 88 47 89]


[[45 48 65 68]
 [68 10 84 22]
 [37 88 71 89]
 [89 13 59 66]
 [40 88 47 89]]

** 注:用Jupyter写的原文本,调试会更方便,我用块区分了代码和输出结果,便于更好理解**

相关推荐
Lee_jerome4 小时前
python神经网络编程入门(十七)——RNN BPTT算法(上):梯度沿时间轴传播的链式法则
rnn·深度学习·神经网络·numpy·反向传播·梯度消失·bptt
编程阿峰2 天前
Python 环境配置(二)安装jupyter、matplotlib、numpy库
开发语言·python·jupyter·numpy·matplotlib
swany2 天前
同步数据中,只需要几秒钟 & milvus向量数据库不可用 dify1.16.1 升级后踩坑记录
开发语言·python·numpy
未知违规用户3 天前
大模型项目:知识库构建工具与 LangChain 操作ChromaDB
人工智能·python·langchain·numpy
huameinan狮子5 天前
数据分析基础:numpy学习
学习·数据分析·numpy
元Y亨H7 天前
numpy与pandas 的介绍
numpy·pandas
广州景颐光电13 天前
3种NumPy向量化实测:光源数据处理从2.3秒压到12.3ms
numpy
梅雅达编程笔记15 天前
零基础学 Python 第14章 | 模块、包与第三方库
开发语言·python·django·numpy·pandas
梅雅达编程笔记15 天前
零基础学 Python 第15章 | 类与对象:面向对象编程入门
开发语言·python·django·numpy·pandas