python中Numpy用法总结

Numpy用法

1.创建ndarry数组

import numpy as np
data1 = [1,3,5,7.8]
w1 = np.array(data1)
print(w1)
data2=(2,4,6,8)
w2=np.array(data2)
print(w2)
data3=[[1,2,3,4],[5,6,7,8]]
w3=np.array(data3)
print(w3)
[1.  3.  5.  7.8]
[2 4 6 8]
[[1 2 3 4]
 [5 6 7 8]]

2.专门创建数组的函数

(1)arange

warry=np.arange(10)
print(warry)
[0 1 2 3 4 5 6 7 8 9]
warry=np.arange(0,1,0.2)     #数组元素为从0到1,间隔为0.2
print(warry)
[0.  0.2 0.4 0.6 0.8]

(2)linspace(最后一个参数指示数组的个数)

warry=np.linspace(0,1,5)   #数组中是5个元素,范围是从0到1
print(warry)
[0.   0.25 0.5  0.75 1.  ]

(3)logspace(产生的是等比数列)

warry=np.logspace(0,1,5)
print(warry)
[ 1.          1.77827941  3.16227766  5.62341325 10.        ]

(4)zeros创建指定长度或形状的全0数组

print(np.zeros(4))
print(np.zeros([4,4]))
[0. 0. 0. 0.]
[[0. 0. 0. 0.]
 [0. 0. 0. 0.]
 [0. 0. 0. 0.]
 [0. 0. 0. 0.]]

(5)diag 创建对角矩阵

print(np.diag([1,2,3,4]))
[[1 0 0 0]
 [0 2 0 0]
 [0 0 3 0]
 [0 0 0 4]]

(6)eye创建对角线为1,其他位置为0的矩阵

print(np.eye(3))
[[1. 0. 0.]
 [0. 1. 0.]
 [0. 0. 1.]]

3.ndarray对象属性和数据转换

(1)查看数组的属性

warry = np.array([[1,2,3,4],[5,6,7,8]])
print(warry.shape)    #查看维度
print(warry.ndim)     #查看秩
print(warry.size)     #查看元素个数
print(warry.dtype)    #查看数据类型
print(warry.itemsize) #查看每个元素的字节大小
warry.shape=4,2       #改变数组的shape
print(warry)
(2, 4)
2
8
int32
4
[[1 2]
 [3 4]
 [5 6]
 [7 8]]

(2)数据类型转换

arr1 = np.arange(6)
print(arr1.dtype)
arr2 = arr1.astype(np.float64)
print(arr2.dtype)
int32
float64

4.生成随机数

arr = np.random.randint(100,200,size = (2,4))
print(arr)

[[153 142 102 147]
 [153 185 175 115]]

关于产生随机数的函数:

binomial:产生二项分布的随机数

normal :产生正态分布的随机数

uniform:产生在[0,1)中均匀分布的随机数

5.数组变换

(1)数组重塑

改变数组维度:

arr1= np.arange(8)
print(arr1)
arr2=arr1.reshape(4,2)
print(arr2)
[0 1 2 3 4 5 6 7]
[[0 1]
 [2 3]
 [4 5]
 [6 7]]

reshape的一个参数可以设置为-1,表示数组的长度可以通过数据本身来判断

arr1= np.arange(12)
print(arr1)
arr2=arr1.reshape(2,-1)
print(arr2)
[ 0  1  2  3  4  5  6  7  8  9 10 11]
[[ 0  1  2  3  4  5]
 [ 6  7  8  9 10 11]]

与reshape相反作用的是ravel和flatten

arr1=np.arange(12).reshape(4,3)
print(arr1)
arr2=arr1.ravel()
print(arr2)


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

(2)数组合并

横向合并

arr1=np.arange(6).reshape(3,2)
print(arr1)
arr2=arr1*2
print(arr2)
arr3=np.hstack((arr1,arr2))
print(arr3)

[[0 1]
 [2 3]
 [4 5]]
[[ 0  2]
 [ 4  6]
 [ 8 10]]
[[ 0  1  0  2]
 [ 2  3  4  6]
 [ 4  5  8 10]]

纵向合并

arr1=np.arange(6).reshape(3,2)
print(arr1)
arr2=arr1*2
print(arr2)
arr3=np.vstack((arr1,arr2))
print(arr3)

[[0 1]
 [2 3]
 [4 5]]
[[ 0  2]
 [ 4  6]
 [ 8 10]]
[[ 0  1]
 [ 2  3]
 [ 4  5]
 [ 0  2]
 [ 4  6]
 [ 8 10]]

concatenate函数当其参数axis=1时进行横向合并,axis=0时进行纵向合并

arr1=np.arange(6).reshape(3,2)
print(arr1)
arr2=arr1*2
print(arr2)
arr3=np.concatenate((arr1,arr2),axis=1)
print(arr3)
arr3=np.concatenate((arr1,arr2),axis=0)
print(arr3)

[[0 1]
 [2 3]
 [4 5]]
[[ 0  2]
 [ 4  6]
 [ 8 10]]
[[ 0  1  0  2]
 [ 2  3  4  6]
 [ 4  5  8 10]]
[[ 0  1]
 [ 2  3]
 [ 4  5]
 [ 0  2]
 [ 4  6]
 [ 8 10]]

(3)数组分割

arr=np.arange(16).reshape(4,4)
print(arr)
print(np.hsplit(arr,2))
print(np.vsplit(arr,2))

[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]
 [12 13 14 15]]
[array([[ 0,  1],
       [ 4,  5],
       [ 8,  9],
       [12, 13]]), array([[ 2,  3],
       [ 6,  7],
       [10, 11],
       [14, 15]])]
[array([[0, 1, 2, 3],
       [4, 5, 6, 7]]), array([[ 8,  9, 10, 11],
       [12, 13, 14, 15]])]

(4)数组转置和轴对换

转置

arr=np.arange(6).reshape(3,2)
print(arr)
print(arr.transpose((1,0)))

[[0 1]
 [2 3]
 [4 5]]
[[0 2 4]
 [1 3 5]]

轴对换

arr=np.arange(6).reshape(3,2)
print(arr)
print(arr.swapaxes(0,1))

[[0 1]
 [2 3]
 [4 5]]
[[0 2 4]
 [1 3 5]]

6.统计分析

(1)排序

arr=np.array([7,0,41,6,2,9,1,12,3,8,4])
print(arr)
arr.sort()
print(arr)

[ 7  0 41  6  2  9  1 12  3  8  4]
[ 0  1  2  3  4  6  7  8  9 12 41]

(2)去重

name=np.array(['红色','蓝色','黄色','白色','红色'])
print(name)
print(np.unique(name))

['红色' '蓝色' '黄色' '白色' '红色']
['白色' '红色' '蓝色' '黄色']

(3)常用统计函数

mean,sum,min,max,std等

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值