• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

numpy使用tiphotoshop

武飞扬头像
国家一级假勤奋大学生
帮助1


numpy存在两种不同的数据类型——矩阵matrix和数组array,都可以处理行列表示的数字元素, matrix与MATLAB中matrices等价

1. numpy中二维数组不支持求逆运算

可以使用scipy中的linalg.inv()函数求逆

二维ndarray替代matrix结合scipy.linalg可以实现全部矩阵运算

2. 创建np.matrix

a = np.matrix('1 2';'3 4')
>>>[[1 2]
   [3 4]]

注意矩阵的换行是;隔开,内部数据以字符串形式,矩阵元素之间以空格隔开, 数据可以是数组

3. 列表转array

temp = np.array(list)
arr = temp.tolist()

4. numpy.nditer迭代数组

提供灵活访问一个或多个数组元素的方式

for x in np.nditer(a):
	print(x, end=",")

控制遍历顺序

for x in np.nditer(a, order='F')# 列序优先
for x in np.nditer(a, order='C')# 行序优先

修改数组中的元素,需要指定为read-write 或 write-only模式

for x in np.nditer(a, op_flags=['readwrite']):
	x[...] = 2*x # 每个元素乘以2

使用外部循环,利用flags参数

  • c_index:跟踪行优先的索引
  • f_index:跟踪列优先的索引
  • multi_index:每次迭代跟踪一种索引类信息
  • external_loop:给出的值是具有多个值的一维数组,而不是零维数组

广播迭代:两个数组可广播,则nditer组合对象可以同时迭代他们

import numpy as np 
 
a = np.arange(0,60,5) 
a = a.reshape(3,4)  
print  ('第一个数组为:')
print (a)
print  ('\n')
print ('第二个数组为:')
b = np.array([1,  2,  3,  4], dtype =  int)  
print (b)
print ('\n')
print ('修改后的数组为:')
for x,y in np.nditer([a,b]):  
    print ("%d:%d"  %  (x,y), end=", " )
第一个数组为:
[[ 0  5 10 15]
 [20 25 30 35]
 [40 45 50 55]]


第二个数组为:
[1 2 3 4]


修改后的数组为:
0:1, 5:2, 10:3, 15:4, 20:1, 25:2, 30:3, 35:4, 40:1, 45:2, 50:3, 55:4,

5. numpy.outer 外积

a,b是两个数组,如果a,b高维则自动flatten为1维

a = [a1, …, am] and b = [ b1, …, bn]
result=[
[a1*b1, a1*b2,…,a1*bn]
[a2*b1, a2*b2,…,a2*bn]
…
[am*b1, am*b2,…,am*bn]
]
np.outer([1,2,3],[4,5,6])

np.outer([[1],[2],[3]],[4,5,6])

上面两句运行结果都是
array([[ 4,  5,  6],
       [ 8, 10, 12],
       [12, 15, 18]])

6. numpy.zeros_like() 创建全零的矩阵

创建一个矩阵,其维度与传入的矩阵一致,为其初始化为全0,无需参数制定shape大小

7. numpy矩阵相乘运算符@

作用相同与numpy.dot()

用于矩阵乘法

from numpy import array,dot
a=array([[1,2],
        [1,2]])
b=array([[5,6],
        [5,6]])
print(a@b)
print(dot(a,b))

out:
[[15 18]
 [15 18]]
[[15 18]
 [15 18]]

特殊用法:当第二个位置为向量时(1行n列的矩阵),则向量会转置

from numpy import array,dot
f=array([1,2]) #1*2
g=array([[1,2],
         [1,2],
         [1,2]]) # 3*2
print(f@g) # g不是向量无法自动转置,报错
print(g@f) # f自动转置
print(dot(g,f))
[5 5 5]
[5 5 5]

8. numpy转pandas

data = pd.DataFrames(numpy_matrix)

9. numpy.concatenate()进行矩阵的拼接

data = numpy.concatenate((a, b), axis=1)

10. 初始化赋值

arr = np.zeros((2, 3))      #初始化一个2*3的元素全为0的数组
arr = np.ones((1, 2))       #初始化一个1*2的元素全为1的数组
arr = np.full((2, 2), 8)    #初始化一个2*2的元素全为8的数组
arr = np.eye(3)              #初始化一个3*3 的对角线元素为1,其余全为0的数组(单位矩阵)
arr = np.random.random((3, 2))  #初始化一个3*2的,填充任意数字的数组
arr = np.empty((2, 3, 4))     #初始化一个2*3*4的数组,不填充

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgfckji
系列文章
更多 icon
同类精品
更多 icon
继续加载