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. MyEclipse控制台console自动跳动的解决方案

    有时候Eclipse启动,控制台console不会自动跳出来,需要手工点击该选项卡才行 按下面的设置,可以让它自动跳出来(或不跳出来): windows  ->   preferences   ...

  2. 使用Try.NET创建可交互.NET文档

    原文地址:Create Interactive .NET Documentation with Try .NET 原文作者:Maria 译文地址:https://www.cnblogs.com/lwq ...

  3. MYSQL5.7版本解决sql_mode=only_full_group_by问题

    在安装有些二开框架时会遇到下面的问题,在填写完数据库密码之后他会提示你请在mysql配置文件中修改ql-mode去掉ONLY_FULL_GROUP_BY,但是我们去mysql的配置文件中查找此配置,有 ...

  4. Node中的console控制台

    1. Node中的console类似于浏览器中的控制台console,它的作用在于帮助开发人员做API的辅助测试. 2. Node中的console主要功能:REPL 2.1 read 读取你输入的内 ...

  5. lightoj 1422【区间DP·分类区间首元素的情况】

    题意: 给你n天分别要穿的衣服种类,可以套着穿, 一旦脱下来就不能再穿,求n天至少要几件. 思路: 区间DP dp[i][j]代表i到j需要至少几件衣服 第i天的衣服在第i天穿上了,dp[i][j]= ...

  6. 阿里云物联网 .NET Core 客户端 | CZGL.AliIoTClient:4. 设备上报属性

    文档目录: 说明 1. 连接阿里云物联网 2. IoT 客户端 3. 订阅Topic与响应Topic 4. 设备上报属性 4.1 上报位置信息 5. 设置设备属性 6. 设备事件上报 7. 服务调用 ...

  7. StringUtils中常用方法leftPad(),rightPad(),center()

    org.apache.commons.lang3的StringUtils 方法如下: public static String leftPadTime(Integer time){    return ...

  8. 企业级应用,如何实现服务化三(dubbo入门案例)

    今天是六一儿童节,从千里之外的广州,回到了贵州老家,真好!好山好水好心情,好了接着写点东西.这是企业级应用,如何实现服务化系列的第三篇.在上一篇:企业级应用,如何实现服务化二(dubbo架构)中,认识 ...

  9. bzoj1125:[POI2008]Poc

    传送门 这个题好难卡啊. 看到这种题自然会想到字符串hash是不是,但是对于每次操作造成的影响需要\(O(n)\)的时间去更新,自然是不优的 可以发现这个更新可以用数据结构来维护,对于每个hash值开 ...

  10. vs 对网站和项目使用IIS Express 的64位版