Array

import numpy as np
# create from python list
list_1 = [1, 2, 3, 4]
array_1 = np.array(list_1)#array([1, 2, 3, 4])
list_2 = [5, 6, 7, 8]
array_2 = np.array([list_1, list_2])

  结果:

array([[1, 2, 3, 4],
[5, 6, 7, 8]])
array_2.shape#(2, 4)
array_2.size#8
array_2.dtype#dtype('int64')
array_3 = np.array([[1.0,2,3],[4.0,5,6]])
array_3.dtype#dtype('float64') array_4 = np.arange(1, 10, 2)#array([1, 3, 5, 7, 9])
np.zeros(5)#array([ 0., 0., 0., 0., 0.])

  

np.zeros([2,3])

  结果:

array([[ 0.,  0.,  0.],
[ 0., 0., 0.]])
np.eye(5)

  结果:

array([[ 1.,  0.,  0.,  0.,  0.],
[ 0., 1., 0., 0., 0.],
[ 0., 0., 1., 0., 0.],
[ 0., 0., 0., 1., 0.],
[ 0., 0., 0., 0., 1.]])
np.eye(5).dtype#dtype('float64')

  

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

  

b = np.array([[1,2,3],[4,5,6]])
b

  结果:

array([[1, 2, 3],
[4, 5, 6]])
b[1][0]#4
b[1,0]#4

  

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

  结果:

array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
c[:2,1:]

  结果:

array([[2, 3],
[5, 6]])

数组与矩阵运算

快速创建数组

import numpy as np
np.random.randn(10)

  结果:

array([ 0.28906593,  1.4302902 ,  1.10346334,  0.11146373, -0.47497452,
0.88859371, 0.18953089, -0.65780036, -2.06789973, -1.45679231])
np.random.randint(10, size=20).reshape(4, 5)

  结果:

array([[8, 5, 8, 4, 5],
[4, 5, 2, 8, 3],
[3, 6, 9, 7, 3],
[3, 0, 4, 7, 0]])

数组运算

a = np.random.randint(10, size=20).reshape(4, 5)
b = np.random.randint(10, size=20).reshape(4, 5)
a
b

  结果:

array([[3, 6, 5, 9, 3],
[3, 3, 4, 6, 8],
[3, 3, 2, 3, 4],
[6, 0, 9, 7, 9]]) array([[1, 5, 6, 0, 6],
[0, 2, 1, 7, 9],
[7, 6, 1, 3, 8],
[4, 4, 3, 1, 0]])
a + b

  结果:

array([[ 4, 11, 11,  9,  9],
[ 3, 5, 5, 13, 17],
[10, 9, 3, 6, 12],
[10, 4, 12, 8, 9]])
a-b

  结果:

array([[ 2,  1, -1,  9, -3],
[ 3, 1, 3, -1, -1],
[-4, -3, 1, 0, -4],
[ 2, -4, 6, 6, 9]])
a * b

  结果:

array([[ 3, 30, 30,  0, 18],
[ 0, 6, 4, 42, 72],
[21, 18, 2, 9, 32],
[24, 0, 27, 7, 0]])
a / b

  结果:

 RuntimeWarning: divide by zero encountered in true_divide
"""Entry point for launching an IPython kernel. array([[ 3. , 1.2 , 0.83333333, inf, 0.5 ],
[ inf, 1.5 , 4. , 0.85714286, 0.88888889],
[ 0.42857143, 0.5 , 2. , 1. , 0.5 ],
[ 1.5 , 0. , 3. , 7. , inf]])
np.mat([[1,2,3],[4,5,6]])

  结果:

matrix([[1, 2, 3],
[4, 5, 6]])
a

  结果:

array([[3, 6, 5, 9, 3],
[3, 3, 4, 6, 8],
[3, 3, 2, 3, 4],
[6, 0, 9, 7, 9]])
np.mat(a)

  结果:

matrix([[3, 6, 5, 9, 3],
[3, 3, 4, 6, 8],
[3, 3, 2, 3, 4],
[6, 0, 9, 7, 9]])

矩阵的运算

A = np.mat(a)
B = np.mat(b)
A
B

  结果:

matrix([[3, 6, 5, 9, 3],
[3, 3, 4, 6, 8],
[3, 3, 2, 3, 4],
[6, 0, 9, 7, 9]]) matrix([[1, 5, 6, 0, 6],
[0, 2, 1, 7, 9],
[7, 6, 1, 3, 8],
[4, 4, 3, 1, 0]])
A + B
A - B

  结果:

matrix([[ 4, 11, 11,  9,  9],
[ 3, 5, 5, 13, 17],
[10, 9, 3, 6, 12],
[10, 4, 12, 8, 9]]) matrix([[ 2, 1, -1, 9, -3],
[ 3, 1, 3, -1, -1],
[-4, -3, 1, 0, -4],
[ 2, -4, 6, 6, 9]])
A * B

  结果: ValueError: shapes (4,5) and (4,5) not aligned: 5 (dim 1) != 4 (dim 0)

a = np.mat(np.random.randint(10, size=20).reshape(4, 5))
b = np.mat(np.random.randint(10, size=20).reshape(5, 4))
a
b
a * b

  结果:

matrix([[4, 4, 3, 2, 7],
[4, 7, 2, 4, 5],
[8, 6, 6, 1, 0],
[5, 9, 6, 2, 8]]) matrix([[5, 8, 9, 2],
[8, 4, 3, 7],
[4, 6, 7, 0],
[5, 8, 5, 3],
[0, 6, 9, 5]]) matrix([[ 74, 124, 142, 77],
[104, 134, 136, 94],
[117, 132, 137, 61],
[131, 176, 196, 119]])

Array常用函数

a = np.random.randint(10, size=20).reshape(4, 5)
np.unique(a)#array([0, 1, 2, 3, 4, 5, 6, 8, 9])
a

  结果:

array([[4, 1, 2, 5, 3],
[9, 8, 1, 4, 0],
[5, 4, 8, 0, 2],
[8, 6, 2, 4, 3]])
sum(a)#array([26, 19, 13, 13,  8])
sum(a[0])#15
sum(a[:,0])#26
a.max()#9
max(a[0])#5
max(a[:,0])#9
b = np.random.randint(5,10, size=20).reshape(4, 5)
np.unique(b)#array([5, 6, 7, 8, 9])
b

  结果:

array([[6, 8, 7, 7, 9],
[5, 5, 5, 8, 5],
[6, 9, 6, 8, 6],
[6, 5, 8, 5, 9]])

Array的input和output

使用pickle序列化numpy array

import pickle
import numpy as np
x = np.arange(10)#array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
f = open('x.pkl', 'wb')
pickle.dump(x, f)

  

f = open('x.pkl', 'rb')
pickle.load(f)#array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

  

np.save('one_array', x)

  

np.load('one_array.npy')#array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

  

y = np.arange(20)#array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16,17, 18, 19])
np.savez('two_array.npz', a=x, b=y)

  

c = np.load('two_array.npz')
c['a']#array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
c['b']#array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,17, 18, 19])

  

一、numpy入门的更多相关文章

  1. Numpy入门 - 生成数组

    今天是Numpy入门系列教程第一讲,首先是安装Numpy: $ pip install numpy numpy是高性能科学计算和数据分析的基础包,本节主要介绍生成连续二维数组.随机二维数组和自定义二维 ...

  2. NumPy入门及基础

    1.1 NumPy 数组对象 NumPy中的ndarray是一个多维数组对象,该对象由两部分组成:  实际的数据;  描述这些数据的元数据. 大部分的数组操作仅仅修改元数据部分,而不改变底层的实际 ...

  3. Numpy入门 - 线性代数运算

    本节矩阵线性代数有很多内容,这里重点演示计算矩阵的行列式.求逆矩阵和矩阵的乘法. 一.计算矩阵行列式[det] import numpy as np from numpy.linalg import ...

  4. Numpy入门 - 行列式转置

    本章实例讲解如何将一个数组对象进行转置,我们可以使用.T将行列数据颠倒过来,看下面的代码: import numpy as np arr = np.array([[1, 2, 3], [4, 5, 6 ...

  5. Numpy入门 - 数组切片操作

    本节主要演示数组的切片操作,数组的切片操作有两种形式:更改原数组的切片操作和不更改原数组的切片操作. 一.更改原数组的切片操作 import numpy as np arr = np.array([1 ...

  6. Numpy入门 - 数组基本运算

    本节主要讲解numpy数组的基本运算,包括两数组相加.相减.相乘和相除. 一.两数组相加add import numpy as np arr1 = np.array([[1, 2, 3], [4, 5 ...

  7. Numpy入门 - 数组排序

    本节主要讲解numpy数组的排序方法sort的应用,包括按升序排列和按降序排列. 一.按升序排列 import numpy as np arr = np.array([[3, 1, 2], [6, 4 ...

  8. Numpy入门 - 数组聚合运算

    本节主要讲解numpy的几个常用的聚合运算,包括求和sum.求平均mean和求方差var. 一.求和sum import numpy as np arr = np.array([[1, 2, 3], ...

  9. 面向矩阵的numpy入门笔记

    我先声明我学numpy的目的:在python中使用矩阵(我需要在机器学习中使用矩阵),所以我的目的很明确,矩阵: 矩阵在numpy中叫ndarray(The N-dimensional array), ...

  10. NumPy入门

    import numpy as np 数组与标量之间的运算作用于数组的每一个元素.

随机推荐

  1. vue中循环时动态绑定值

    在vue项目中,有很多需要动态循环绑定的场景,在未知绑定数量的情况下只能动态生成绑定值 1.首先在data中定义一个对象,我在项目中时循环绑定下拉框,所以定义了一个selectVal = {} 2.在 ...

  2. 668. Kth Smallest Number in Multiplication Table

    Nearly every one have used the Multiplication Table. But could you find out the k-th smallest number ...

  3. lightoj 1027【数学概率】

    #include <bits/stdc++.h> using namespace std; typedef long long LL; const int N=1e2+10; int ma ...

  4. 用BeautifulSoup简单爬取BOSS直聘网岗位

    用BeautifulSoup简单爬取BOSS直聘网岗位 爬取python招聘 import requests from bs4 import BeautifulSoup def fun(path): ...

  5. 初入Three.js 第一章

    一.什么是WebGL? 1.WebGL是在浏览器中实现三维效果的一套规范. 二.什么是threejs? 1.你将它理解成three + js就可以了.three表示3D的意思,js表示javascri ...

  6. centos7安装chrome浏览器

    1.配置yum下载源: 在目录 /etc/yum.repos.d/ 下新建文件 google-chrome.repo, 并且在该文件中添加如下内容: [google-chrome]name=googl ...

  7. urllib库的基本使用

    urllib库的使用 官方文档地址:https://docs.python.org/3/library/urllib.html 什么是urllib Urllib是python内置的HTTP请求库包括以 ...

  8. Codeforces Round #547 (Div. 3) A.Game 23

    链接:https://codeforces.com/contest/1141/problem/A 题意: 给n和m,有两种操作:将n×2 或 n×3,求最少的乘法次数由n得到m. 不能得到时为-1. ...

  9. 如何使用fastJson来解析JSON格式数据和生成JSON格式数据

    由于项目用到了JSON格式的数据,在网上搜索到了阿里的fastjson比较好用,特此记录fastjson用法,以备以后查询之用. decode: 首先创建一个JSON解析类: public class ...

  10. Exception in thread "main" java.lang.SecurityException: class "javax.servlet.FilterRegistration"'s signer information does not match signer information of other classes in the same package解决办法(图文详解)

    不多说,直接上干货! 问题详情 SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation. SLF ...