rr2), axis=1))
[[ 1 2 7 8]
[ 3 4 9 10]
[ 5 6 11 12]]
#3. 合并两个numpy数组的列,注意使用vstack()方法合并numpy数组,numpy数组应该有相同的列,其中vstack的v表示vertical垂直的
print(np.vstack((arr1, arr2)))
[[ 1 2]
[ 3 4]
[ 5 6]
[ 7 8]
[ 9 10]
[11 12]]
# Python学习交流群:711312441
#4. 合并两个numpy数组,其中axis=0表示合并两个numpy数组的列
print(np.concatenate((arr1, arr2), axis=0))
[[ 1 2]
[ 3 4]
[ 5 6]
[ 7 8]
[ 9 10]
[11 12]]
九、通过函数创建numpy数组
方法 |
详解 |
array() |
将列表转换为数组,可选择显式指定dtype |
arange() |
range的numpy版,支持浮点数 |
linspace() |
类似arange(),第三个参数为数组长度 |
zeros() |
根据指定形状和dtype创建全0数组 |
ones() |
根据指定形状和dtype创建全1数组 |
eye() |
创建单位矩阵 |
empty() |
创建一个元素全随机的数组 |
reshape() |
重塑形状 |
1 array
arr = np.array([1, 2, 3])
print(arr)
[1 2 3]
2 arange
#1. 构造0-9的ndarray数组
print(np.arange(10))
[0 1 2 3 4 5 6 7 8 9]
#2. 构造1-4的ndarray数组
print(np.arange(1, 5))
[1 2 3 4]
#3. 构造1-19且步长为2的ndarray数组
print(np.arange(1, 20, 2))
[ 1 3 5 7 9 11 13 15 17 19]
3 linspace/logspace
#1. 构造一个等差数列,取头也取尾,从0取到20,取5个数
print(np.linspace(0, 20, 5))
[ 0. 5. 10. 15. 20.]
#2. 构造一个等比数列,从10**0取到10**20,取5个数
print(np.logspace(0, 20, 5))
[1.e+00 1.e+05 1.e+10 1.e+15 1.e+20]
4 zeros/ones/eye/empty
#1. 构造3*4的全0numpy数组
print(np.zeros((3, 4)))
[[0. 0. 0. 0.]
[0. 0. 0. 0.]
[0. 0. 0. 0.]]
#2. 构造3*4的全1numpy数组
print(np.ones((3, 4)))
[[1. 1. 1. 1.]
[1. 1. 1. 1.]
[1. 1. 1. 1.]]
#3. 构造3个主元的单位numpy数组
print(np.eye(3))
[[1. 0. 0.]
[0. 1. 0.]
[0. 0. 1.]]
#4. 构造一个4*4的随机numpy数组,里面的元素是随机生成的
print(np.empty((4, 4)))
[[ 2.31584178e+077 -1.49457545e-154 3.95252517e-323 0.00000000e+000]
[ 0.00000000e+000 0.00000000e+000 0.00000000e+000 0.00000000e+000]
[ 0.00000000e+000 0.00000000e+000 0.00000000e+000 0.00000000e+000]
[ 0.00000000e+000 0.00000000e+000 1.29074055e-231 1.11687366e-308]]
5 reshape
arr = np.ones([2, 2], dtype=int)
print(arr.reshape(4, 1))
[[1]
[1]
[1]
[1]]
6 fromstring/fromfunction(了解)
# fromstring通过对字符串的字符编码所对应ASCII编码的位置,生成一个ndarray对象
s = 'abcdef'
# np.int8表示一个字符的字节数为8
print(np.fromstring(s, dtype=np.int8))
# [ 97 98 99 100 101 102]
/Applications/anaconda3/lib/python3.6/site-packages/ipykernel_launcher.py:4: DeprecationWarning: The binary mode of fromstring is deprecated, as it behaves surprisingly on unicode inputs. Use frombuffer instead
after removing the cwd from sys.path.
def func(i, j):
"""其中i为numpy数组的行,j为numpy数组的列"""
return i * j
# 使用函数对numpy数组元素的行和列的索引做处理,得到当前元素的值,索引从0开始,并构造一个3*4的numpy数组
print(np.fromfunction(func, (3, 4)))
[[0. 0. 0. 0.]
[0. 1. 2. 3.]
[0. 2. 4. 6.]]
十、numpy数组运算
运算符 |
说明 |
+ |
两个numpy数组对应元素相加 |
- |
两个numpy数组对应元素相减 |
* |
两个numpy数组对应元素相乘 |
/ |
两个numpy数组对应元素相除,如果都是整数则取商 |
% |
两个numpy数组对应元素相除后取余数 |
**n |
单个numpy数组每个元素都取n次方,如**2:每个元素都取平方 |
arrarr1 = np.array([[1, 2], [3, 4], [5, 6]])
print(arr1)
[[1 2]
[3 4]
[5 6]]
arr2 = np.array([[7, 8], [9, 10], [11, 12]])
print(arr2)
[[ 7 8]
[ 9 10]
[11 12]]
print(arr1 + arr2)
[[ 8 10]
[12 14]
[16 18]]
print(arr1**2)
[[ 1 4]
[ 9 16]
[25 36]]
十一、numpy数组运算函数
numpy数组函数 |
详解 |
np.sin(arr) |
对numpy数组arr中每个元素取正弦,sin(x)sin(x) |
np.cos(arr) |
对numpy数组arr中每个元素取余弦,cos(x)cos(x) |
np.tan(arr) |
对numpy数组arr中每个元素取正切,tan(x)tan(x) |
np.arcsin(arr) |
对numpy数组arr中每个元素取反正弦,arcsin(x)arcsin(x) |
np.arccos(arr) |
对numpy数组arr中每个元素取反余弦,arccos(x)arccos(x) |
np.arctan(arr) |
对numpy数组arr中每个元素取反正切,arctan(x)arctan(x) |
np.exp(arr) |
对numpy数组arr中每个元 |