1.首先,我们回顾一下NumPy的数组属性:
np.shape:重塑数组 如 :
a = np.array([[1,2,3],[4,5,6]]) a.shape = (3,2)
np.reshape:重塑数组 如:
a = np.array([[1,2,3],[4,5,6]])
b = a.reshape(3,2)
np.ndim:返回数组的维数
np.itemsize:返回数组中每个元素的字节单位长度
np.flage:当前值的状态,属性参考上一篇
2.来自现有数据的 一些函数方法
(1)ndarray就不多解释了
(2)np.frombuffer:暴露缓冲区接口的任何对象都用作参数来返回
import numpy as np
s = 'Hello World'
a = np.frombuffer(s, dtype = 'S1')
print (a)
输出:
['H' 'e' 'l' 'l' 'o' ' ' 'W' 'o' 'r' 'l' 'd']
(3)np.fromiter:从任何可迭代对象构建一个
ndarray
对象,返回一个新的一维数组
# 从列表中获得迭代器
import numpy as np
list = range(5)
it = iter(list)
# 使用迭代器创建 ndarray
x = np.fromiter(it, dtype = float)
print (x)
输出:
[0. 1. 2. 3. 4.]
(4)np.linspace:指定了范围之间的均匀间隔数量,而不是步长
import numpy as np
x = np.linspace(10,20,5)
print (x)
输出:
[10. 12.5 15. 17.5 20.]
(5)np.logspace:其中包含在对数刻度上均匀分布的数字。 刻度的开始和结束端点是某个底数的幂
# 将对数空间的底数设置为 2
import numpy as np
a = np.logspace(1,10,num = 10, base = 2)
print (a)
输出:
[ 2. 4. 8. 16. 32. 64. 128. 256. 512. 1024.]
3.高级索引
(1)整数索引:
import numpy as np
x = np.array([[1, 2], [3, 4], [5, 6]])
y = x[[0,1,2], [0,1,0]]
print (y)
输出:
[1 4 5]
(2)布尔索引:当结果对象是布尔运算(例如比较运算符)的结果时,将使用此类型的高级索引
import numpy as np
x = np.array([[ 0, 1, 2],[ 3, 4, 5],[ 6, 7, 8],[ 9, 10, 11]])
# 现在我们会打印出大于 5 的元素
print '大于 5 的元素是:'
print x[x > 5]
输出:
大于 5 的元素是:
[ 6 7 8 9 10 11]
4.广播
释义:广播是指 NumPy 在算术运算期间处理不同形状的数组的能力。 对数组的算术运算通常在相应的元素上进行。
例如:
import numpy as np
a = np.array([1,2,3,4])
b = np.array([10,20,30,40])
c = a * b
print (c)
输出:
[10 40 90 160]
对于不同维度的数组,本无法进行元素之间的操作,但NumPy提供了这个功能。例如:
import numpy as np
a = np.array([[0.0,0.0,0.0],[10.0,10.0,10.0],[20.0,20.0,20.0],[30.0,30.0,30.0]])
b = np.array([1.0,2.0,3.0])
print (a + b)
输出:
[[ 1. 2. 3.]
[ 11. 12. 13.]
[ 21. 22. 23.]
[ 31. 32. 33.]]
5.数组上的迭代
迭代器对象np.nditer,它是一个有效的多维迭代器对象,可以用于在数组上进行迭代。
a = np.arange(0,60,5)
a = a.reshape(3,4)
for x in np.nditer(a):
print (x)
输出:
0 5 10 15 20 25 30 35 40 45 50 55
注意:迭代的顺序匹配数组的内容布局,而不考虑特定的排序。----也就是说,数组的变换和布局是不影响对其原始数组的迭代的,最终会按着原始数组的形式进行迭代。如果经过了拷贝,那就以拷贝后的新数组为原始对象。
广播的迭代:
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))
输出:
第一个数组:
[[ 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
下一篇接着讲NumPy的函数和Matplolib库。
转载于:https://www.cnblogs.com/qianshuixianyu/p/9245145.html