相思本是无凭语,

莫向花牋费泪行。

hanstary

相思本是无凭语,莫向花牋费泪行。

NumPy数组操作

NumPy数组操作

1.修改形状

arr.reshape(m,n) 
# 将数组修改成m*n的新数组
# 一维数组
import numpy as np

arr = np.arange(10)
arr1 = arr.reshape(2, 5)
print("arr:")
print(arr)
print("arr1:")
print(arr1)
# 二维数组
import numpy as np

arr = np.array([[1, 2, 3, 4], [5, 6, 7, 8]])
arr1 = arr.reshape(4, 2)
print("arr:")
print(arr)
print("arr1:")
print(arr1)

2.修改维度

np.array(arr,ndmin=n)
# n表示要转换的维度
import numpy as np

arr = np.array([1, 2, 3, 4, 5, 6, 7, 8])
arr1 = np.array(arr, ndmin=2)
print("arr:")
print(arr)
print("arr1:")
print(arr1)

注:只能低维度转高维度

import numpy as np

# 二维转一维
arr = np.array([[1, 2, 3, 4], [5, 6, 7, 8]])
arr1 = np.array(arr, ndmin=1)
print("arr:")
print(arr)
print("arr1:")
print(arr1)

可见转换前后结果相同,虽然没有报错,但无法完成转换。

那么是什么原因呢?我之前的博客曾提过ndmin,ndmin用于指定数组的最小维度,然而这里arr的维度为2,本身已经大于1了,所以并不会进行转换。

3.翻转数组

np.transpose(arr)
# arr: 要翻转的数组
import numpy as np

arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
arr1 = np.transpose(arr)
print("arr:")
print(arr)
print("arr1:")
print(arr1)

4.数组去重

np.unique(arr)
# arr:要去重的数组
import numpy as np

arr = np.array([1, 1, 1, 2, 3, 4, 5, 6])
arr1 = np.unique(arr)
print("arr:")
print(arr)
print("arr1:")
print(arr1)

注:函数返回的结果是一维数组

import numpy as np

arr = np.array([[1, 2, 1], [4, 5, 6], [7, 8, 9]])
arr1 = np.unique(arr)
print("arr:")
print(arr)
print("arr1:")
print(arr1)

由此可见,尽管传入的是二维数组,返回的结果依然是一维数组。

5.深拷贝与浅拷贝

  • 深拷贝:对一个数组对象拷贝后,前后是两个不同的对象,并且数据也不共享
  • 浅拷贝:对于一个数组对象拷贝后,前后是两个不同的对象,但数据是共享的
#深拷贝
arr.copy()
#浅拷贝
arr.view()
import numpy as np

arr = np.array([0, 0, 0, 0, 0, 0])
# 深拷贝
arr1 = arr.copy()
# 浅拷贝
arr2 = arr.view()
arr[0] = 1
print("深拷贝:")
print(arr1)
print("浅拷贝:")
print(arr2)

可见深拷贝的数据是不共享的,而浅拷贝的数据是共享的。

posted on 2024-06-20 15:41  hanstary  阅读(19)  评论(0编辑  收藏  举报

导航