美文网首页
Numpy入门

Numpy入门

作者: Geeker工作坊 | 来源:发表于2018-11-27 21:24 被阅读0次

近期由于要做数据分析相关的工作,看到网友的推荐利用Python进行数据分析这本书,于是就开始学习起来,为了自己能够查阅方便就就把本书代码敲进了博客里来,正在学习这本书的朋友同样也可以翻一翻看一下,从本书第三章开始Numpy入门写起。

import numpy as np
import pandas as pd
from numpy.random import randn

# 创建ndarray
data1 = [1,2,3]
arr1 = np.array(data1)

data2 = [[1,2,3,4],[5,6,7,8]]
arr2 = np.array(data2)

print(arr2.shape) # 显示出数组的维度
print(arr2.dtype) # 显示出数组数据类型

np.zeros((3, 6))  # 创建维度(3,6)并使用 0 填充

np.empty((2,3,2)) # 创建一个(2,3,2)的维度的值,里面填充的是一些垃圾数值

np.eye(5) # 创建一个5*5矩阵进行对角线为1 其余为0

arr3 = np.array([1,2,3],dtype=np.float64) # 固定数值类型创建一个ndarray

arr3 = arr3.astype(np.int64) # 数据类型转换

int_array = np.arange(1,19,5,dtype=np.int64) #指定初始,结束值,步长和类型

# 数值和标量之间的计算
arr = np.array([[1,2],[3,4]])
arr * arr # [[1,4],[9,16]]
arr - arr # [[0,0],[0,0]]

# 基本的索引和切片
arr = np.arange(10)
arr[5] # 5
arr[5:8] # array([5,6,7])
arr[5:8] = 12 # [0,1,2,3,4,12,12,12,8,9] 标量向后传值
arr_slice = arr[5:8] # 这个其实是这个数组的一个试图而非数组的复制
arr_slice[1] = 1234 # [0,1,2,3,4,5,1234,7,8,9]
arr_slice = arr_slice.copy()

arr = np.empty((3,3),dtype=np.int64)
arr[1:2]
arr[:2,1:]
arr[1,1:2] # 索引与切片结合使用

randn(7,4) # 返回一个(7,4)维度的正态分布ndarray
names = ['Bob','Joe','Will','Bob','Joe','Tom','Jack']
names = np.array(names) # array([ True, False, False,  True, False, False, False])
data = randn(7,4)
data[names=="Bob"]

arr = np.arange(32) # 创建一个32的一维数组
arr.reshape((8,4)) # 将数组转换成一个(8,4)维度
arr[[1,5,6,2],[0,3,2,1]] #花式索引,实际上是提取的(1,0)(5,3).... 是一个视图
arr[np.ix_([1,5,6,2],[0,3,2,1])] # 这个效果跟上面一下,这个是复制到新数组,不是视图

# 数组的转置和轴对换
arr = np.arange(15).reshape((3,5))
arr.T # 数组的转置

arr = np.random.randn(6,3)
np.dot(arr.T,arr) # 计算局矩阵的内积 arr.T * arr

# 通用函数,快速的元素级数组函数
arr = np.arange(10)
np.sqrt(arr) # 对所有数组进行开发运算
np.exp(arr) # e
arr2 = np.arange(10)
np.add(arr,arr2) # 数组相加 == arr1 + arr2

arr1 = randn(8)
arr2 = randn(8)
np.maximum(arr1,arr2) # 求出各自对应位置的最大值
np.isnan(arr1) # 返回哪一个位置是空值 [False, False, False, False]

# 利用数组尽心数据处理
point = np.arange(1,5,1)
xs, ys = np.meshgrid(point,point) # 复制相同行数

# 逻辑条件表达为数组的运算
xarr = np.array([1.1,1.2,1.3,1.4])
yarr = np.array([2.2,2.3,2.4,2.5])
cond = np.array([True,False,True,True])
arr = zip(xarr,yarr,cond)  # 按照列打包

np.where(cond,xarr,yarr)  # x if cond else y
arr = np.random.randn(4)
np.where(arr > 1,2,-2)  # 第一个必须是数组,后面两个不必是数组,根据一个数组生成另一个数组

# 数学和统计方法
arr = np.random.randn(5,4)
arr.mean()
np.mean(arr) # 求平均数
np.sum(arr) # 求和公式
np.std(arr) # 标准差
np.var(arr) # 方差
np.max(arr) # 最小值
np.min(arr) # 最大值

# 数组中布尔值会被强制转换为1(True)和 0(False).因此sum可以用来计数
arr = np.random.randn(100)
(arr > 0).sum() # 51 计算有多少个 > 0
# 排序
arr = np.random.randn(8)
np.sort(arr,axis=1) # 返回排序后数组的副本
arr.sort(0) # 就地修改数组

# 数组分位数
large_arr = np.random.randn(1000)
large_arr.sort()
large_arr[0.05 * len(large_arr)]

# 唯一华以及其他的集合逻辑
# 提供一些针对一维数组的基本集合运算 常用np.unique
names = np.array(["Bob",'Jon','Will','Bob','Jon','Joe'])
np.unique(names) # 返回去重并且排序后的一个数组
names = np.array([6,0,0,3,2,5])
np.in1d(names,[2,3,6]) # 返回一个布尔值数组

相关文章

  • Numpy简易入门笔记

    来自 AI基础:Numpy简易入门手动运行了一遍实例代码,笔记待查于此处。 Numpy 简易入门 Numpy是 N...

  • numpy 学习(待更新)

    numpy 学习 标签(空格分隔): 机器学习 Numpy 入门 一、安装 pip install numpyor...

  • Numpy

    1.numpy.tile(A,B)函数,实例验证 快速入门 Numpy[https://mp.weixin.qq....

  • NumPy之 索引技巧

    系列文章 一次性搞定NumPy入门基础知识NumPy之操控ndarray的形状NumPy之浅拷贝和深拷贝NumPy...

  • Numpy语法入门(一)

    1 Numpy简易入门 1.1 认识Numpy数组对象 1.1.1 np.arange In [1]: Out[1...

  • numpy-n2

    [TOC]说明:本文是numpy入门的第二篇笔记。 numpy的智能切片 numpy提供了比原始python强大的...

  • Python编程&数据科学入门 Lesson4

    第四课 - NumPy 入门 本课内容: 0. 导入 NumPy 包 1. 创建 NumPy 数组 2. 索引和切...

  • Numpy 学习图谱

    在学习 Numpy 的时候,整理了一份 Numpy 学习图谱,希望同样可以帮助到想要入门 Numpy 的朋友。 N...

  • 【Chapter 4】 NumPy基础:数组和矢量计算

    【Chapter 4】 NumPy基础:数组和矢量计算 使用 Python 进行科学计算:NumPy入门 NumP...

  • 对 NumPy.dot() 的理解

    【对 Numpy.dot() 的理解】 我看了一下 「使用 Python 进行科学计算:NumPy入门 」 这个教...

网友评论

      本文标题:Numpy入门

      本文链接:https://www.haomeiwen.com/subject/mennqqtx.html