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. jquery 点击某一行,得到这一行的每个列的数据

    <html><head> <title>test</title> <script src="../Scripts/jquery-1.8. ...

  2. Codeforces 744C【DFS】

    题意: 给你一幅图,然后有几个特殊点 和不特殊点,给你一些已经连了的边,在保证特殊点不能连的前提下,问最多还能添几条边,双向边 思路: 简单题,就是一个特殊点就是一个集合,然后搜一下,最后把还有没连的 ...

  3. HDU1597【二分瞎搞】

    题意: 求第n个数: 思路: 可以看到一种序列: 1 12 123 1234 12345 123456 1234567 12345678 123456789 1234567891 1234567891 ...

  4. Unity3d与3dmax模型比例问题

    1 把3dmax中1米的物体,在unity中为1厘米,所以unity中需要放大100倍才能跟3dmax中效果相同 2 unity中调整模型->inspector-scale factor可以调整 ...

  5. Windows下SVN的下载、安装

    SVN全称Subversion,是一款优秀的版本控制工具. SVN分为服务器.客户端两部分,服务器和客户端版本很多,有的是收费的,有的需要注册.我们选择免费.不用注册的. 以VisualSVN作为服务 ...

  6. boot接入elasticsearch

    boot接入elasticsearch 参考博客:https://blog.csdn.net/li521wang/article/details/83792552 项目源码demo:https://g ...

  7. Rsync备份同步数据工具

    Rsync  is  a  fast and extraordinarily versatile file copying tool. Rsync是一款开源的,快速的,多功能的,可实现全量和增量的本地 ...

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

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

  9. echarts相关属性设置(3)环状图

    option = { grid: { left: '3%', top: '0%', // height: 500, right: '30%', containLabel: true, }, legen ...

  10. XML标准和RFC官方文档