• np
import numpy as np
  • np.__version__
print(np.__version__)  # 1.15.2
  • numpy.arange(start, stop, step, dtype),创建一维范围数组
print(np.arange(10))                           # [0 1 2 3 4 5 6 7 8 9]
print(np.arange(1, 5, 2)) # [1 3]
print(np.linspace(1, 10000, 4, dtype=int)) # 四个数的等差数列 [ 1 3334 6667 10000]
print(np.logspace(1, 4, num=4, dtype=float)) # 四个数的等比数列 [ 10. 100. 1000. 10000.]
  • np.ones((2, 2), dtype=bool),创建布尔数组
print(np.full((2, 2), True, dtype=bool))  # [[ True  True] [ True  True]]

print(np.ones((2, 2), dtype=bool))        # [[ True  True] [ True  True]]

print(np.full((2, 2), 3, dtype=float))    # [[3. 3.] [3. 3.]]

  • 提取所有的奇数
arr = np.arange(10)

a = arr[arr % 2 == 1]
print(a) # [1 3 5 7 9]
  • 所有的奇数赋值为-1
arr[arr % 2 == 1] = -1
print(arr) # [ 0 -1 2 -1 4 -1 6 -1 8 -1]
  • 奇数赋值为 -1,其他数 +1
arr = np.arange(10)
out = np.where(arr % 2 == 1, -1, arr + 1) print(arr) # [0 1 2 3 4 5 6 7 8 9]
print(out) # [1 -1 3 -1 5 -1 7 -1 9 -1]
  • np.concatenate([a, b], axis=0)或np.vstack([a, b]),垂直拼接两个数组
a = np.arange(10).reshape(2, 5)
b = np.repeat(1, 10).reshape(2, -1) # automatically decides the number of cols
print(a) # [[0 1 2 3 4] [5 6 7 8 9]]
print(b) # [[1 1 1 1 1] [1 1 1 1 1]]
print(type(a)) # <class 'numpy.ndarray'>
print(np.concatenate([a, b], axis=0))  # [[0 1 2 3 4] [5 6 7 8 9] [1 1 1 1 1] [1 1 1 1 1]]
print(np.vstack([a, b])) # same
print(np.r_[a, b]) # same
  • np.concatenate([a, b], axis=1)或np.hstack([a, b]),水平拼接两个数组
print(np.concatenate([a, b], axis=1))  # [[0 1 2 3 4 1 1 1 1 1] [5 6 7 8 9 1 1 1 1 1]]
print(np.hstack([a, b])) # same
print(np.c_[a, b]) # same
  • np.repeat(a, 3),np.tile(a, 3),重复序列的两种方式
a = np.array([1, 2, 3])

print(np.repeat(a, 3))                 # [1 1 1 2 2 2 3 3 3]

print(np.tile(a, 3))                   # [1 2 3 1 2 3 1 2 3]

print(np.r_[np.repeat(a, 3), np.tile(a, 3)])  # 水平拼接 [1 1 1 2 2 2 3 3 3 1 2 3 1 2 3 1 2 3]
  • np.intersect1d(a, b)获取共有项,np.setdiff1d(a, b)获取a独有项
a = np.array([1, 2, 3, 6])
b = np.array([1, 2, 8, 9]) print(np.intersect1d(a, b)) # [1 2] print(np.setdiff1d(a, b)) # [3 6]
  • np.where(a == b)获取元素匹配的位置,相同位置元素相同成为匹配
print(a == b)  # [ True  True False False]
print(np.where(a == b)) # (array([0, 1]),)
  • np.where((a >= 5) & (a <= 7))提取给定范围的数字
a = np.arange(3, 10)
b = a[(a >= 5) & (a <= 7)] print((a >= 5) & (a <= 7)) # [False False True True True False False]
print(np.logical_and(a>=5, a<=7)) # [False False True True True False False]
print(b) # [5 6 7] index1 = np.where((a >= 5) & (a <= 7))
index2 = np.where(np.logical_and(a>=5, a<=7)) # 两种方法的效果相同 print(a[index1]) # [5 6 7]
print(a[index2]) # [5 6 7]
  • np.vectorize(max),使用(自定义)函数处理数组,提取每一列的最大值
print(max(5, 6))   # 6

a = np.array([1, 2, 3])
b = np.array([2, 1, 3]) pair_max = np.vectorize(max, otypes=[float]) # 提取每一列的最大值 print(pair_max(a, b)) # [2 2 3]
  • arr[:, [1, 0, 2]],交换二维数组的两列,理解为列的复制粘贴
arr = np.arange(9).reshape(3, 3)

print(arr[:, [1, 0, 2]])
# [[1 0 2]
# [4 3 5]
# [7 6 8]]
  • arr[[1, 0, 2], :],交换二维数组的两行
print(arr[[1, 0, 2], :])
# [[3 4 5]
# [0 1 2]
# [6 7 8]]
  • arr[:: -1, :],反转二维数组的行
print(arr[::-1])
# [[6 7 8]
# [3 4 5]
# [0 1 2]]
print(arr[:: -1, :])
# [[6 7 8]
# [3 4 5]
# [0 1 2]]
  • arr[:, ::-1],反转二维数组的列
print(arr[:, ::-1])
# [[2 1 0]
# [5 4 3]
# [8 7 6]]

END

numpy基础篇-简单入门教程3的更多相关文章

  1. numpy基础篇-简单入门教程4

    np.set_printoptions(precision=3),只显示小数点后三位 np.random.seed(100) rand_arr = np.random.random([2, 2]) n ...

  2. numpy基础篇-简单入门教程2

    import numpy as np Array 数组 print(np.zeros((2, 2))) # [[0. 0.] [0. 0.]] print(np.ones((2, 2))) # [[1 ...

  3. numpy基础篇-简单入门教程1

    np.split(A, 4, axis=1),np.hsplit(A, 4) 分割 A = np.arange(12).reshape((3, 4)) # 水平方向的长度是4 print(np.spl ...

  4. NumPy简单入门教程

    # NumPy简单入门教程 NumPy是Python中的一个运算速度非常快的一个数学库,它非常重视数组.它允许你在Python中进行向量和矩阵计算,并且由于许多底层函数实际上是用C编写的,因此你可以体 ...

  5. 程序员,一起玩转GitHub版本控制,超简单入门教程 干货2

    本GitHub教程旨在能够帮助大家快速入门学习使用GitHub,进行版本控制.帮助大家摆脱命令行工具,简单快速的使用GitHub. 做全栈攻城狮-写代码也要读书,爱全栈,更爱生活. 更多原创教程请关注 ...

  6. GitHub这么火,程序员你不学学吗? 超简单入门教程 【转载】

    本GitHub教程旨在能够帮助大家快速入门学习使用GitHub. 本文章由做全栈攻城狮-写代码也要读书,爱全栈,更爱生活.原创.如有转载,请注明出处. GitHub是什么? GitHub首先是个分布式 ...

  7. Flyway 简单入门教程

    原文地址:Flyway 简单入门教程 博客地址:http://www.extlight.com 一.前言 Flyway 是一款开源的数据库版本管理工具,它更倾向于规约优于配置的方式.Flyway 可以 ...

  8. .net 开源模板引擎jntemplate 实战演习:基础篇之入门

    一.简介 模板引擎是Web开发中非常重要的一环,它负责将页面上的动态内容呈现出最终的结果展现给前端用户,在asp.net mvc中,我们最熟悉的就是Razor了,作为官方的视图引擎(视图引擎不等同于模 ...

  9. 【ASP.NET 基础】WCF入门教程一(什么是WCF)?

    一.概述 Windows Communication Foundation(WCF)是由微软发展的一组数据通信的应用程序开发接口,可以翻译为Windows通讯接口,它是.NET框架的一部分.由 .NE ...

随机推荐

  1. (转)js document.all的用法

    document.all用法 一. document.all是页面内所有元素的一个集合.例如:      document.all(0)表示页面内第一个元素 二.document.all可以判断浏览器 ...

  2. 再次建立wordpress

    山大的火星人的站还在维护www.h4ck.org.cn. 也许是募课潮过后的效应,www时代还能聚合很多知识,到了客户端时代技术越发松散,很难发实用的技术总结. 如果重新审视问题不难发现,问题在于使用 ...

  3. js产生随机数的几个方法

    1.Math.random(); 结果为0-1间的一个随机数(包括0,不包括1) 2.Math.floor(num); 参数num为一个数值,函数结果为num的整数部分. 3.Math.round(n ...

  4. 给DOM操作生成的元素添加事件

    问题:通过js给页面添加新元素,并给该元素添加绑定事件,但新添加的元素上却没有绑定任何事件. 常见例子:在处理表格的时候,每行行末有个删除按钮,如下图.点击删除按钮的时候删除这一行. //html部分 ...

  5. SpringCloud学习笔记(15)----Spring Cloud Netflix之Hystrix Dashboard的使用

    1. 引入依赖 在前面几节中的消费者中添加pom依赖. <dependency> <groupId>org.springframework.cloud</groupId& ...

  6. PKI和加密,散列算法

    Day 11-PKI和加密,散列算法 PKI(Public Key Infrastructure公钥基础设施) 1 PKI(Public Key Infrastructure公钥基础设施)回顾学习 - ...

  7. win10 无法访问XP 共享目录原因

    win10 无法访问XP 共享目录原因     *现象:  在地址栏中输入\\192.168.100.5 (XP文件服务器),出现:.....找不到网络路径, 此连接尚未还原.             ...

  8. 模块 -logging

    模块 -logging 一:在控制台显示:默认 import logging logging.debug("debug") logging.info("debug&quo ...

  9. 模块-时间模块(new)

    模块-时间模块 导入: import time 方法: _STRUCT_TM_ITEMS __doc__ __loader__ __name__ __package__ __spec__ altzon ...

  10. sort排序到底怎么排序

    sort()方法 sort() 方法在适当的位置对数组的元素进行排序,并返回数组. <!DOCTYPE html> <html> <head> <meta c ...