python numpy 数组元素扩大倍数 numpy数组增加元素_函数返回


  • 大端、小端

<意味着编码是小端(最小有效字节存储在最小地址中)。
>意味着编码是大端(最大有效字节存储在最小地址中)。

  • 广播

在缺失轴上进行扩展,扩展成已有数组维数

  • 数据类型对象 (dtype)

# 使用数组标量类型
import numpy as np
dt = np.dtype(np.int32)
print dt
输出:
int32

  • NumPy数组属性
  • 输出数组维度(shape)

import numpy as np
a = np.array([[1,2,3],[4,5,6]])
print a.shape
输出:
(2, 3)

  • 调整数组大小(shape)

import numpy as np
a = np.array([[1,2,3],[4,5,6]])
a.shape = (3,2)
print a
输出:
[[1, 2]
[3, 4]
[5, 6]]

  • reshape函数来调整数组大小
  • ndarray.ndim 返回数组维数

import numpy as np
a = np.arange(24)
b = a.ndim
print(b)
输出:
1

  • numpy.itemsize 返回数组中每个元素的字节单位长度
  • 数组创建
  • 创建指定形状、类型未初始化数组(empty)

numpy.empty ([X,X], dtype = int)

  • 创建0填充的数组

x = np.zeros((5,), dtype = http://np.int)

  • 创建1填充的数组

x = np.ones([2,2], dtype = int)

  • 将现有序列x转化为数组( asarray )

a = np.asarray(x)

  • numpy.frombuffer 此函数将缓冲区解释为一维数组。 暴露缓冲区接口的任何对象都用作参数来返回ndarray

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']

  • numpy.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.]

  • numpy.arange 从数值范围创建数组

numpy.arange(start, stop, step, dtype)

  • numpy.linspace 指定了范围之间的均匀间隔数量

numpy.linspace(start, stop, num, endpoint, retstep, dtype)
1.start 序列的起始值2.stop 序列的终止值,如果endpoint为true,该值包含于序列中3.num 要生成的等间隔样例数量,默认为504.endpoint 序列中是否包含stop值,默认为ture5.retstep 如果为true,返回样例,以及连续数字之间的步长6.dtype 输出ndarray的数据类型

  • numpy.logspace

numpy.logscale(start, stop, num, endpoint, base, dtype)
1.start 起始值是base ** start2.stop 终止值是base ** stop3.num 范围内的数值数量,默认为504.endpoint 如果为true,终止值包含在输出数组当中5.base 对数空间的底数,默认为106.dtype 输出数组的数据类型,如果没有提供,则取决于其它参数# 将对数空间的底数设置为 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.]

  • ~(取补运算符)来过滤NaN

import numpy as np
a = np.array([np.nan,1,2,np.nan,3,4,5])
print(a)
print(~np.isnan(a)) #返回bool值
print(a[~np.isnan(a)])
输出:
[nan 1. 2. nan 3. 4. 5.]
[False True True False True True True]
[1. 2. 3. 4. 5.]

  • 从数组中过滤掉非复数元素

import numpy as np

a = np.array([1, 2+6j, 5, 3.5+5j])

print a[np.iscomplex(a)]

输出:

[2.0+6.j 3.5+5.j]

  • C、F风格排序

print '以 F 风格顺序排序:'

c = b.copy(order='F')

print '以 F 风格顺序排序:'

for x in np.nditer(a, order = 'F'):

print x

print '以 C 风格顺序排序:'

c = b.copy(order='C')

print '以 C 风格顺序排序:'

for x in np.nditer(a, order = 'C'):

print x

  • # 返回展开数组中的下标的对应元素

print a.flat[5]

  • 水平堆叠:c = np.hstack((a,b))
  • 竖直堆叠:c = np.vstack((a,b))
  • 分割

1.split 将一个数组分割为多个子数组2.hsplit 将一个数组水平分割为多个子数组(按列)3.vsplit 将一个数组竖直分割为多个子数组(按行)

  • 添加、删除元素

1.resize 返回指定形状的新数组2.append 将值添加到数组末尾3.insert 沿指定轴将值插入到指定下标之前4.delete 返回删掉某个轴的子数组的新数组5.unique 寻找数组内的唯一元素

  • NumPy位操作

1.bitwise_and 对数组元素执行位与操作2.bitwise_or 对数组元素执行位或操作3.invert 计算位非4.left_shift 向左移动二进制表示的位5.right_shift 向右移动二进制表示的位

  • NumPy字符串函数

1.add() 返回两个str或Unicode数组的逐个字符串连接2.multiply() 返回按元素多重连接后的字符串3.center() 返回给定字符串的副本,其中元素位于特定字符串的中央4.capitalize() 返回给定字符串的副本,其中只有第一个字符串大写5.title() 返回字符串或 Unicode 的按元素标题转换版本6.lower() 返回一个数组,其元素转换为小写7.upper() 返回一个数组,其元素转换为大写8.split() 返回字符串中的单词列表,并使用分隔符来分割9.splitlines() 返回元素中的行列表,以换行符分割10.strip() 返回数组副本,其中元素移除了开头或者结尾处的特定字符11.join() 返回一个字符串,它是序列中字符串的连接12.replace() 返回字符串的副本,其中所有子字符串的出现位置都被新字符串取代13.decode() 按元素调用str.decode14.encode() 按元素调用str.encodeprint(np.char.add(['hello'],[' world']))
print(np.char.multiply('Hello ',3))
print(np.char.center('hello',20,fillchar='#'))
print(np.char.capitalize('hello world'))
print(np.char.title('hello world'))
print(np.char.lower('HELLO'))
print(np.char.upper('hello'))
print(np.char.split('hello world very nice'))
print(np.char.split('hello,world,very,nice',sep=','))
print(np.char.strip('ohello open','o'))
print(np.char.strip(['heool','hool','ooolook'],'o'))
print(np.char.join('-','hello'))
print(np.char.replace('how old are you','you','ni'))
a=np.char.encode('hello','cp500')
print(a)
a=np.char.decode(a,'cp500')
print(a)

  • 返回四舍五入所需精度的值numpy.around()
  • 返回不大于输入参数的最大整数 numpy.floor()
  • 返回大于输入参数的最小整数 numpy.ceil()
  • 加减乘除

print(np.add(a,b))
print(np.subtract(a,b))
print(np.multiply(a,b))
print(np.divide(a,b))

  • 返回参数逐元素的倒数,。 由于 Python 处理整数除法的方式,对于绝对值大于 1 的整数元素,结果始终为 0, 对于整数 0,则发出溢出警告。 numpy.reciprocal()
  • 将第一个输入数组中的元素作为底数,计算它与第二个输入数组中相应元素的幂

print(np. power(a,2) )

  • 取余函数np.mode(a,b)、np.remainder(a,b)
  • 复数操作函数

numpy.real() 返回复数类型参数的实部。
numpy.imag() 返回复数类型参数的虚部。
numpy.conj() 返回通过改变虚部的符号而获得的共轭复数。
numpy.angle() 返回复数参数的角度。 函数的参数是degree。 如果为true,返回的角度以角度制来表示,否则为以弧度制来表示。

  • 从给定数组中的元素沿指定轴返回最小值和最大值 numpy.amin() 和 numpy.amax()(0-横着找,1-竖着找|0跨行,1跨列)
  • numpy.ptp()函数返回沿轴的值的范围(最大值 - 最小值)。
  • NumPy排序

numpy.sort()

numpy.argsort() 返回数据的索引数组

numpy.extract() 函数返回满足任何条件的元素

  • 字节交换

numpy.ndarray.byteswap()函数在两个表示:大端和小端之间切换

  • 创建视图

b = a.view()

  • 深复制

b = a.copy()

  • 返回对角线为1,其余位置为0的矩阵

print(np.matlib.eye(n=3,M=4,k=1,dtype=float))

1.n 返回矩阵的行数2.M 返回矩阵的列数,默认为n3.k 对角线的索引4.dtype 输出的数据类型

  • numpy.matlib.identity()函数返回给定大小的单位矩阵

print(np.matlib.identity(5, dtype = float))

  • numpy.matlib.rand()`函数返回给定大小的填充随机值的矩阵

print(np.matlib.rand(3,3))

  • numpy.dot() 此函数返回两个数组的点积,等于矩阵的乘积

print(np.dot(a,b))

  • numpy.vdot() 此函数返回两个向量的点积

a = np.array([[1,2],[3,4]])

b = np.array([[11,12],[13,14]])

print(np.vdot(a,b))

计算: 1*11 + 2*12 + 3*13 + 4*14 = 130

  • numpy.inner() 此函数返回一维数组的向量内积

print(np.inner(np.array([1,2,3]),np.array([0,1,0])))

# 等价于 1*0+2*1+3*0

# 多维数组示例

import numpy as np

a = np.array([[1,2], [3,4]])

print('数组 a:')

print(a)

b = np.array([[11, 12], [13, 14]])

print('数组 b:')

print(b)

print('内积:')

print(np.inner(a,b))

输出:

数组 a: [[1 2] [3 4]]

数组 b: [[11 12] [13 14]]

内积: [[35 41] [81 95]

计算过程:

1*11+2*12, 1*13+2*14

3*11+4*12, 3*13+4*14

  • numpy.matmul 函数返回两个数组的矩阵乘积

计算的两个矩阵维度不同时,使用广播机制

  • numpy.linalg.det()函数计算输入矩阵的行列式
  • numpy.linalg.solve()函数给出了矩阵形式的线性方程的解

import numpy as np
a = np.array([[1, 1, 1], [0, 2, 5], [2, 5, -1]])
print('数组 a:')
print(a)
ainv = np.linalg.inv(a)
print('a 的逆:')
print(ainv)
print('矩阵 b:')
b = np.array([[6], [-4], [27]])
print(b)
print('计算:A^(-1)B:')
x = np.linalg.solve(a, b)
print(x)

  • numpy.linalg.inv()函数来计算矩阵的逆
  • matplotlib
  1. ndarray对象x由np.arange()函数创建为x轴上的值。
  2. y轴上的对应值存储在另一个数组对象y中。
  3. 这些值使用matplotlib软件包的pyplot子模块的plot()函数绘制。
  4. 图形由show()函数展示

格式化字符:
'-'实线样式'--'短横线样式'-.'点划线样式':'虚线样式'.'点标记','像素标记'o'圆标记'v'倒三角标记'^'正三角标记'&lt;'左三角标记'&gt;'右三角标记'1'下箭头标记'2'上箭头标记'3'左箭头标记'4'右箭头标记's'正方形标记'p'五边形标记'*'星形标记'h'六边形标记 1'H'六边形标记 2'+'加号标记'x'X 标记'D'菱形标记'd'窄菱形标记'&#124;'竖直线标记'_'水平线标记颜色缩写:
'b'蓝色'g'绿色'r'红色'c'青色'm'品红色'y'黄色'k'黑色'w'白色

  • subplot()函数允许你在同一图中绘制不同的东西

import numpy as np

import matplotlib.pyplot as plt

# 计算正弦和余弦曲线上的点的 x 和 y 坐标

x = np.arange(0, 3 * np.pi, 0.1)

y_sin = np.sin(x)

y_cos = np.cos(x)

# 建立 subplot 网格,高为 2,宽为 1

# 激活第一个 subplot

plt.subplot(2, 1, 1)

# 绘制第一个图像

plt.plot(x, y_sin)

plt.title('Sine')

# 将第二个 subplot 激活,并绘制第二个图像

plt.subplot(2, 1, 2)

plt.plot(x, y_cos)

plt.title('Cosine')

# 展示图像

plt.show()

  • pyplot子模块提供bar()函数来生成条形图

from matplotlib import pyplot as plt

x = [5,8,10]

y = [12,16,6]

x2 = [6,9,11]

y2 = [6,15,7]

plt.bar(x, y, align = 'center')

plt.bar(x2, y2, color = 'g', align = 'center')

plt.title('Bar graph')

plt.ylabel('Y axis')

plt.xlabel('X axis')

plt.show()

  • load()和save()函数处理 numPy 二进制文件(带npy扩展名)
  • loadtxt()和savetxt()函数处理正常的文本文件