python基础学习笔记(一)numPy

numPy是高性能科学计算和数据分析的基础包,安装方法

pip install numpy

引用方式

import numpy as np

普通方式循环打印数组

import random

li = [random.uniform(100.0,200.0) for _ in range(1000)]

r = 6.3

list(map(lambda x:x*r,li))

使用ndarray(数组内元素类型必须一样,数组大小固定)一个多维数组,每一个元素都乘以r

arr=np.array(li);

arr * r

已知购物车中商品的价格和数量求总金额

price = [random.uniform(50.0,10.0) for _ in range(100)]
num = [random.randint(1,5) for _ in range(100)]

sum = 0 

for i in range(len(prize)):

       sum += prize[i] * num[i]

sum
prize = np.array(prize)

num = np.array(num)

(prize * num).sum()

ndarry的数据类型dtype[布尔,整型,浮点,复数],32位整型区间(-2**31,2**31-1)

num.size获取数组大小

num.shape数组形状(以元祖形式)

num.ndim纬度

num.T数组的转置(行列转换)

 数组类型转换

li = [1,2,3,4,5]

arr = np.array(li,dtype='float')

arr.dtype
np.arange(3,10,2); 生成一个数组,参数:起点,终点,步长[可以为小数]

np.linspace(1,10,10)生成一个数组数组前一位减后一位一样大,参数:起点,终点,步长[可以为小数]

np.zeros(10) 重建一个全0的数组

np.zeros((3,5),dtype='int')重建一个全0的多维数组

np.ones(10)生成一个全1的数组

np.empty(10)创建一个数组,不设定初始值,都是随机数

数组所索引取值

a[2][3]

a[2,3]

数组切片用冒号,a[1],a[2:3],构造二维数组切片

arr2d = np.arange(15).reshape(3,5)

arr2d[1:,1:4]参数[行,列]

数组赋值a[:] = 0

与列表不同,数组切片时不会自动复制,在切片数组上修改影响原数组,解决办法用copy()

li_a = [1,2,3,4,5]

li_b = li_a[1:3]

li_b[0] = 100

li_a
修改不影响li_a
arr = np.arange(10)

b = arr[3:6]  如果不想被修改可以copy一份arr[3:6].copy()

b[0] = 100

arr

给一个数组选出数组中大于5的数

li = [random.randint(0,10) for _ in range(50)]

list(filter(lambda x:x>5,li))
使用numpy下ndarry
arr = np.array(li)

arr[arr>5]
取出数组中大于5的偶数
arr[(arr>5)&(arr%2==0)]

取出指定下标的的元素

arr[[2,4,7]]

对二维数组选取第一列和第三列

arr2d[:,[1,3]]
注意
arr2d[[0,2],[1,3]]是取第一行第二个和第三行第四个

arr2d[[0,2],:][:,[1,3]]是取第一行和第三行的第1,3个元素
arr2d[[0,2],:][:,[1,3]]

常用函数

trunc 向零取整

round/rint 四舍五入

floor 向下取整

ceil 向上取整

modf 整数和小数部分分开,返回两个数组

nan 不是一个数float("NaN") nan !=nan

inf float("inf")无限大float("-inf")无限小

a = np.array([1,2,3,4,0])

b = np.array([1,0,3,4,0])

c= a/b

去掉所有nan

c[(~np.isinf(c)) & (~np.isnan(c))]

maximum 返回两个数组比较后较大的元素np.maximum(a,b)

minimum 返回两个数组比较后较小的元素

mean 平均数

var 方差(一组数的离散程度),每个数-平均数的平方 求和/数组长度

std 求标准差(方差开根号)

min 最小值 argmin 最小值的索引

max 最大值 argmax 最大值的索引

numpy下的随机数表random,一般都可以传递数组形状参数,返回数组

rand  np.random.rand(100) 得到100个0,1之间的随机数

randint np.random.randint(1,8,(4,5)) 得到1,8之间的一个二维数组

choice np.random.choice([1,4,5,7,9],10) 从一个数组中随机选取10个数

shuffle 洗牌

uniform 返回指定范围内的随机小数

猜你喜欢

转载自blog.csdn.net/ieflex/article/details/84550098