参考链接: https://www.runoob.com/numpy/numpy-array-from-numerical-ranges.html.
numpy相关操作
数组属性
创建数组
可以使用array函数
从常规的Python列表和元组创造数组。所创建的数组类型由原序列中的元素类型推导而来。
from numpy import *
a = array( [2,3,4] )
a
array([2, 3, 4])
b = array([(1.5,2,3),(4,5,6)])
b
array([[ 1.5, 2. , 3. ],
[ 4. , 5. , 6. ]])
函数function创建
函数ones创建一个全1的数组,函数empty创建一个内容随机并且依赖与内存状态的数组。默认创建的数组类型(dtype)都是float64。
zeros((3,4))
array([[ 0., 0., 0., 0.],
[ 0., 0., 0., 0.],
[ 0., 0., 0., 0.]])
ones((2,3,4),dtype=int16) # dtype can also be specified
array([[[1, 1, 1, 1],
[1, 1, 1, 1],
[1, 1, 1, 1]],
[[1, 1, 1, 1],
[1, 1, 1, 1],
[1, 1, 1, 1]]], dtype=int16)
empty((2,3))
array([[ 0., 0., 0.],
[ 0., 0., 0.]])
numpy.arange
numpy 包中的使用 arange 函数创建数值范围并返回 ndarray 对象,函数格式如下:
numpy.arange(start, stop, step, dtype)
根据 start 与 stop 指定的范围以及 step 设定的步长,生成一个 ndarray。(不包含end)
参数说明:
参数 | 描述 |
---|---|
start | 起始值,默认为0 |
stop | 终止值(不包含) |
step | 步长,默认为1 |
dtype | 返回ndarray的数据类型,如果没有提供,则会使用输入数据的类型。 |
import numpy as np
x = np.arange(5)
print (x)
[0 1 2 3 4]
import numpy as np
# 设置了 dtype
x = np.arange(5, dtype = float)
print (x)
[0. 1. 2. 3. 4.]
numpy.linspace
numpy.linspace 函数用于创建一个一维数组,数组是一个等差数列构成的,格式如下:
np.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)
参数说明:
参数 | 描述 |
---|---|
start | 序列的起始值 |
stop | 序列的终止值,如果endpoint为true,该值包含于数列中 |
num | 要生成的等步长的样本数量,默认为50 |
endpoint | 该值为 true 时,数列中中包含stop值,反之不包含,默认是True。 |
retstep | 如果为 True 时,生成的数组中会显示间距,反之不显示。 |
dtype | ndarray 的数据类型 |
以下实例用到三个参数,设置起始点为 1 ,终止点为 10,数列个数为 10。
import numpy as np
a = np.linspace(1,10,10)
print(a)
#输出结果为:
[ 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.]
设置元素全部是1的等差数列:
#实例
import numpy as np
a = np.linspace(1,1,10)
print(a)
#输出结果为:
[1. 1. 1. 1. 1. 1. 1. 1. 1. 1.]
将 endpoint 设为 false,不包含终止值:
实例
import numpy as np
a = np.linspace(10, 20, 5, endpoint = False)
print(a)
输出结果为:
[10. 12. 14. 16. 18.]
如果将 endpoint 设为 true,则会包含 20。
打印数组
当你打印一个数组,NumPy以类似嵌套列表的形式显示它,但是呈以下布局:
最后的轴从左到右打印
次后的轴从顶向下打印
剩下的轴从顶向下打印,每个切片通过一个空行与下一个隔开
一维数组被打印成行,二维数组成矩阵,三维数组成矩阵列表。
a = arange(6) # 1d array
print (a)
[0 1 2 3 4 5]
b = arange(12).reshape(4,3) # 2d array
print (b)
[[ 0 1 2]
[ 3 4 5]
[ 6 7 8]
[ 9 10 11]]
c = arange(24).reshape(2,3,4) # 3d array
print (c)
[[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
[[12 13 14 15]
[16 17 18 19]
[20 21 22 23]]]
numpy 乘法
分类:
元素相乘:multply()
矩阵相乘:dot()、matmul()、’@’
’ * ': 是特别的。在数组操作中,作为元素相乘;在矩阵操作中作为矩阵相乘。
以下举例说明:
在数组上操作的效果:
import numpy as np
>>> a1 = np.array([[1,2,3],[4,5,6]])
>>> b1 = np.array([1,2,3])
>>> a2 = np.array([1,2,3])
>>> b2 = np.array([1,2,3])
>>> a1 * b1 # 对应元素相乘
[[ 1 4 9]
[ 4 10 18]]
>>> a1 @ b1 # 矩阵相乘
[14 32]
>>> a2 * b2 # 对应元素相乘
[1 4 9]
>>> a2 @ b2 # 矩阵相乘
14
>>> np.multiply(a1, b1), np.multiply(a2, b2) # 对应元素相乘
(array([[ 1, 4, 9],
[ 4, 10, 18]]), array([1, 4, 9]))
>>> np.dot(a1, b1), np.dot(a2, b2) # 矩阵相乘
(array([14, 32]), 14)
>>> np.matmul(a1, b1), np.matmul(a2, b2) # 矩阵相乘
(array([14, 32]), 14)
在矩阵上的效果:
>>> a3 = np.matrix([[1,2,3],[4,5,6]])
>>> b3_1 = np.matrix([1,2,3])
>>> b3 = np.matrix([[1],[2],[3]])
>>> a3 * b3 # 矩阵相乘
[[14]
[32]]
>>> a3 @ b3 # 矩阵相乘
[[14]
[32]]
>>> np.multiply(a3,b3_1) # 对应元素相乘
matrix([[ 1, 4, 9],
[ 4, 10, 18]])
>>> np.dot(a3, b3) # 矩阵相乘
matrix([[14],
[32]])
>>> np.matmul(a3, b3) # 矩阵相乘
matrix([[14],
[32]])
乘法运算转载链接: https://blog.csdn.net/u011851421/article/details/83783826.