python--numpy库2--迭代数组

numpy.nditer
1、可以分别对行列进行迭代,从而控制遍历顺序
例子:

import numpy as np
a=np.arange(12).reshape(3,4)
b=a.T
#迭代
print("原始数组为:")
print(a)
print(" \n")
print("转置后的数组为:")
print(b)
print(" \n")
print("对原始数组进行迭代,默认行迭代")
for x in np.nditer(a):
    print(x,end=' ,')
print(' \n')
print("对转置后的数组进行迭代")
#区别:a与a.T的遍历顺序是一样的,但他们本身是不一样的
for x1 in np.nditer(b):
     print(x1,end=' ,')
print(' \n')
print("从上面可以看出,对转置后的迭代和对原始数组进行迭代,输出都是一样的")
print("如果想要按列进行迭代,需要自己加order")
# print(' \n')
print("下面对原始数组按列进行迭代")
for x2 in np.nditer(a,order='F'):
    print(x2,end=' ,')
print('\n')
print("对转置后的数组进行按列迭代")
for x3 in np.nditer(b,order='C'):
    print(x3, end=' ,')

结果如下:

原始数组为:
[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]
 
转置后的数组为:
[[ 0  4  8]
 [ 1  5  9]
 [ 2  6 10]
 [ 3  7 11]]
 
对原始数组进行迭代,默认行迭代
0 ,1 ,2 ,3 ,4 ,5 ,6 ,7 ,8 ,9 ,10 ,11 , 

对转置后的数组进行迭代
0 ,1 ,2 ,3 ,4 ,5 ,6 ,7 ,8 ,9 ,10 ,11 , 

从上面可以看出,对转置后的迭代和对原始数组进行迭代,输出都是一样的
如果想要按列进行迭代,需要自己加order
下面对原始数组按列进行迭代
0 ,4 ,8 ,1 ,5 ,9 ,2 ,6 ,10 ,3 ,7 ,11 ,

对转置后的数组进行按列迭代
0 ,4 ,8 ,1 ,5 ,9 ,2 ,6 ,10 ,3 ,7 ,11 ,

2、修改元素,由于python默认它是只读对象,所以对其修改时,需要指定read-write或者write-only

a = np.arange(0,24,2).reshape(3,4)
print ('原始数组是:')
print (a)
print ('\n')
for x in np.nditer(a, op_flags=['readwrite']):
    x[...]=2*x
print ('修改后的数组是:')
print (a)
原始数组是:
[[ 0  2  4  6]
 [ 8 10 12 14]
 [16 18 20 22]]

修改后的数组是:
[[ 0  4  8 12]
 [16 20 24 28]
 [32 36 40 44]]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值