数据处理:科学数据包numpy基本介绍

这篇博客介绍了numpy包,对比了numpy与python list和dictionary的优势,详细讲解了numpy中array的特性,包括创建方法如np.zeros(), np.ones(), np.arange()和np.linspace(),以及矩阵操作如乘法、求和、最大最小值、转置等。同时,讨论了axis参数在操作中的作用,并提到了array的合并、分割和拷贝等知识点。" 122375748,11638686,使用laravel8构建图片验证码,"['PHP', 'laravel框架', 'HTML', 'JavaScript', '后端开发']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第一部分:numpy包

一.numpy和pandas优点

与python中的list和dictionary不同,numpy包中是用C语言书写的,相比之下,运行速度更快,效率更高,而pandas是基于numpy的科学数据包。

二.numpy中的array

1.numpy中array的基本属性:

import numpy as np
a = np.array([[1,2,3],
            [2,3,4]])
print(a)
print('number of dimention:',a.ndim)
print('shape:',a.shape)
print('size:',a.size)

结果:
[[1 2 3]
 [2 3 4]]
number of dimention: 2
shape: (2, 3)
size: 6

2.numpy中的int和float类型默认都是64位,如有特殊需要,可以声明。
np.zeros()----生成都是0的数组
np.ones()----生成都是1的数组
np.arange()----同range,由范围生成数组
np.linspace()----线性分段,生成数组

import numpy as np
a = np.array([1,2,3],dtype = np.float)
b = np.array([1,2,3],dtype = np.int32)
zeros = np.zeros((3,4))
ones = np.ones((2,3),dtype=np.int16)
arange = np.arange(1,13).reshape((3,4))
linspace = np.linspace(0,10,6,dtype=np.int16).reshape((2,3))
print(a.dtype)
print(b.dtype)
print('zeros:',zeros)
print('ones:',ones)
print('arange:',arange)
print('linspace:',linspace)


结果:
float64
int32
zeros: [[0. 0. 0. 0.]
 [0. 0. 0. 0.]
 [0. 0. 0. 0.]]
ones: [[1 1 1]
 [1 1 1]]
arange: [[ 1  2  3  4]
 [ 5  6  7  8]
 [ 9 10 11 12]]
linspace: [[ 0  2  4]
 [ 6  8 10]]

3.矩阵乘法、求和、最大值、最小值:

import numpy as np
a = np.array([[1,2],
              [0,1]])
b = np.arange(4).reshape((2,2))
print('*:',a * b)
print('矩阵乘法1:',np.dot(a,b))
print('矩阵乘法2:',a.dot(b))
# axis=1代表以行为单位,axis=0代表以列为单位
c = np.random.random((2,4))
print(c)
print(np.sum(c,axis=1))
print(np.min(c,axis=0))
print(np.max(c,axis=1))

结果:
*: [[0 2]
 [0 3]]
矩阵乘法1[[4 7]
 [2 3]]
矩阵乘法2[[4 7]
 [2 3]]
[[0.05244046 0.08485348 0.52986536 0.23112923]
 [0.27362985 0.67852876 0.6282096  0.87522057]]
[0.89828852 2.45558878]
[0.05244046 0.08485348 0.52986536 0.23112923]
[0.52986536 0.87522057]

4.最大值、最小值索引,中间值:

import numpy as np
a = np.arange(2,14).reshape((3,4))
print(a)
print(a.argmin())
print(a.argmax())
print(a.mean())
# 注意:a.argmin()等价于np.argmin(a)

结果:
[[ 2  3  4  5]
 [ 6  7  8  9]
 [10 11 12 13]]
0
11
7.5

5.矩阵转置:a.T <==> a.transpose() <==> np.transpose(a)
6.axis=0axis=1区别:
使用0值表示沿着每一列或行标签\索引值向下执行方法;
使用1值表示沿着每一行或者列标签模向执行对应的方法。
在这里插入图片描述

7.循环遍历:

# 默认for循环是分出每一行
for row in a:
    print(row)
    
[14 13 12 11]
[10  9  8  7]
[6 5 4 3]
# 可用.flat生成一行的迭代器,遍历数组中每个数
for item in a.flat:
    print(item)
    
14
13
...

8.array的合并:

import numpy as np
a = np.array([[1,1],
             [2,2]])
b = np.array([[3,3],
             [4,4]])
print(np.vstack((a,b)))  #vertical stack
print(np.hstack((a,b)))  #horizontal stack
print(np.concatenate((a,b),axis=0))  #连续合并,0--纵向,1--横向

结果:
 [2 2]
 [3 3]
 [4 4]]
[[1 1 3 3]
 [2 2 4 4]]
[[1 1]
 [2 2]
 [3 3]
 [4 4]]

9.array的分割:

import numpy as np
a = np.arange(1,13).reshape((3,4))
print(np.split(a,3,axis=0)) #垂直或水平分割一定份数
print(np.vsplit(a,3)) #垂直分割一定份数
print(np.hsplit(a,2)) #水平分割一定份数
print(np.array_split(a,3,axis=1)) #当不能等份分割时用.array_split

结果:
[array([[1, 2, 3, 4]]), array([[5, 6, 7, 8]]), array([[ 9, 10, 11, 12]])]
[array([[1, 2, 3, 4]]), array([[5, 6, 7, 8]]), array([[ 9, 10, 11, 12]])]
[array([[ 1,  2],
       [ 5,  6],
       [ 9, 10]]), array([[ 3,  4],
       [ 7,  8],
       [11, 12]])]
[array([[ 1,  2],
       [ 5,  6],
       [ 9, 10]]), array([[ 3],
       [ 7],
       [11]]), array([[ 4],
       [ 8],
       [12]])]

10.array的等号赋值与list相同,可认为是引用,是互相关联的。如果想单独在定义一个相同的array,可以使用拷贝,即.copy()的方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值