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. js页面的全屏展示和退出全屏显示

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD ...

  2. Python3.6 的字符串内建函数

    1.capitalize(self) 将字符串的第一个字符转换为大写 2.casefold(self) 返回将字符串中所有大写字符转换为小写后生成的字符串 3.center(self, width, ...

  3. 洛谷 - P3033 - 牛的障碍Cow Steeplechase - 二分图最大独立集

    https://www.luogu.org/fe/problem/P3033 二分图最大独立集 注意输入的时候控制x1,y1,x2,y2的相对大小. #include<bits/stdc++.h ...

  4. 1107 Social Clusters (30 分)

    When register on a social network, you are always asked to specify your hobbies in order to find som ...

  5. POJ1699【AC自动机+状压DP_感言】

    萌新感言: 我的天呐! 因为是AC自动机的专题所以没有管别的...硬着头皮吃那份题解(代码)..[请戳简单美丽可爱的代码(没开玩笑)] 首先讲AC自动机: tag存的是以这个节点为后缀的字符串个数(已 ...

  6. C 语言实例 - 字符串排序

    C 语言实例 - 字符串排序 C 语言实例 C 语言实例 按字典顺序排序. 实例 #include<stdio.h> #include <string.h> int main( ...

  7. 超简单 Promise封装小程序ajax 超好用 以及封装登录

    //网络类 //封装网络请求 const ajax = (ajaxData, method) => { wx.showLoading({ title: '加载中', mask: true }); ...

  8. sQL存储过程的优缺点

    目前具体的项目中没有使用sql存储过程,都用的封装好的框架,简单说下存储过程的优缺点. 优点: 1.存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般 SQL 语句每执行一次就编 ...

  9. 牛客寒假5-D.炫酷路途

    链接:https://ac.nowcoder.com/acm/contest/331/D 题意: 小希现在要从寝室赶到机房,路途可以按距离分为N段,第i个和i+1个是直接相连的,只需要一秒钟就可以相互 ...

  10. Codeforces 1142B(倍增)

    1.先预处理出在循环中某数前面的数是谁. 2.读入a数列时贪心选取最晚的父亲. 3.链上倍增预处理二进制祖先. 4.对于每个位置,预处理第n-1个祖先位置最早要从哪里开始,技巧上再顺手与前一位的最早位 ...