利用python进行数据分析 | numpy基础

import numpy as np
data = np.random.randn(2,3)
data * 10
data + data
data.shape
data.dtype

1.生成ndarray

生成数组最简单的方式就是使用array函数

ndarray是N维数组对象(矩阵),描述的是相同类型的元素集合

data1 = [1,2,3,4,5]
arr1 = np.array(data1)
#array([1,2,3,4,5])
arr1
data2 = [[1,2,3,4],[5,6,7,8]]
arr2 = np.array(data2)
arr2.ndim
arr2.shape
arr2.dtype
arr2.T
arr2.size
arr2.ndim
arr2.reshape(4,2)
np.concatenate((data1,data2),axis=1)
np.zeros(10)
np.zeros((3,6))
np.empty((2,3,2))
#用于创建一个二维数组,其特点是k对角线上的值为1,其余值全部为0,可以理解为单位矩阵
np.eye(5,4) 
np.unique(arr1)
np.all(data2[0:1,:] > 2)
np.any(data2[0:1,:] > 2)
np.random.randint(5,15,size=(4,4))
#生成等间隔的数组,用于在指定的区间内返回间隔均匀的值
np.linspace(0,100,11)
#在给定区间内创建一系列均匀间隔的值
np.arange(10,50,2)

2.数组算术

arr1 = np.array([[1,2,3],[4,5,6]])
arr1 * arr1
arr1 - arr1
1 / arr1
arr1 ** 0.5
arr2 = np.array([[0,4,1],[7,3,12]])
arr2 > arr1

a = np.array([[1,22,3,14],
              [3,24,51,1]])
np.sum(a)
np.mean(a)
a.argsort()
a.T

3.基础索引与切片

#array([0,1,2,3,4,5,6,7,8,9])
arr = np.arange(10)
#5
arr[5]
#array([5,6,7])
arr[5:8]
arr[5:8] = 12
#array([0,1,2,3,4,12,12,12,8,9])
arr

arr2d = np.array([[1,2,3],[4,5,6],[7,8,9]])
arr2d[2]
arr2d[0][2]
arr2d[:2,1:]

a[[0,1,2,3],[1,1,1,1]] += 10

4.布尔索引

names = np.array(['bob','joe','will','bob','will','joe','joe'])
data = np.random.randn(7,4)
#array([True,False,False,True,False,False,False],dtype=bool)
names = 'Bob'
data[names == 'bob']
#array([True,False,True,True,True,False,False],dtype=bool)
mask = (names == 'bob') | (names == 'will')
data[data<0] = 0

5.索引

arr = np.empty((8,4))
for i in range(8):
  arr[i] = i

arr = np.arrange(32).reshape((8,4))

6.数组转置和换轴

arr = np.arrange(15).reshape((3,5))
arr.T

7.创建

np.array([1,2,3])
np.array([(1,2,3),(4,5,6)])
np.zeros((3,4))
np.ones((2,3,4))
#创建一维等差数组
np.arange(5)
#创建二维等差数组
np.arange(6).reshape(2,3)
#创建单位矩阵
np.eye(3)
#创建二维随机数组
np.random.rand(2,3)
#创建二维随机整数数组(数值小于5)
np.random.randint(5,size = (2,3)) 

8.元素数据类型

#使用dtype函数查看数组的数据类型
a = np.array([1,2,3])
a.dtype
#使用astype转换数据类型
a.astype(np.float)

9.数组堆叠

stack(arrays,axis):沿着新轴连接数组的序列

column_stack:将一维数组作为列堆叠到二维数组中

hstack():按水平方向堆叠数组

vstack():按垂直方向堆叠数组

dstack():按深度方向堆叠数组

10.随机数

#当我们设置相同的seed,每次生成的随机数相同,如果不设置seed,则每次会生成不同的随机数
np.random.seed(0)

#生成一个0到1之间的均匀分布
a = np.random.rand(4,2,3)

#返回一个符合标准正态分布的数组
a = np.random.randn(2,3,4)

#返回一定范围的一维或多维整数
a = np.random.randint(low=6,high=10,size=(2,3,4),dtype='int')

11.广播

对不同形状的数组进行数值计算的方式,对数组的算术运算通常在相应的元素上进行

如果两个数组a和b形状相同,即满足a.shape==b.shape,那么a*b的结果就是a与b数组对应位相乘,这就要求维数相同,且各维度的长度相同

a = np.array([1,2,3,4])
b = np.array([10,20,30,40])
c = a * b

当运算的2个数组的形状不同时,numpy将自动触发广播机制

a = np.array([[0,0,0],
             [10,10,10],
             [20,20,20],
             [30,30,30]])
b = np.array([1,2,3])

对两个数组,分别比较它们的每一个维度(若其中一个数组没有当前维度则忽略),满足:数组拥有相同形状,当前维度的值相等,当前维度的值有一个是1。若条件不满足,则抛出异常

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值