1、元组作为字典的键值
import numpy as np
a = {}
a[tuple([1024,1024,3])] = np.zeros((2,4))
print(a[(1024,1024,3)])
结果为:
array([[0., 0., 0., 0.],
[0., 0., 0., 0.]])
我想应该是元组具有唯一性,所以可以被使用。
2、对数组中满足条件元素进行改值操作
import numpy as np
matrix = np.array([[0, 2, 4],
[4, 5, 0],
[0, 4, 0]])
matrix[matrix>2] = 100
matrix的结果为:
array([[ 0, 2, 100],
[100, 100, 0],
[ 0, 100, 0]])
3、匿名函数和*号操作
import numpy as np
a = lambda x,y:np.array(x)+np.array(y)
b = [[1, 2, 3], [4, 5, 6]]
print(a(*b))
结果为:
array([5, 7, 9])
4、字典先声明,后动态添加内容的用法
img = {'object': list()}
obj = {}
img['object'] += [obj]
obj['min'] = 0
obj['max'] = 1
print(img)
结果为:
{'object': [{'min': 0, 'max': 1}]}
5、从numpy数组中选取满足条件的值
a = np.array([[1, 2, 3],
[3, 4, 5],
[1, 2, 3]])
b = a[a>2]
print(b)
结果为:
array([3, 3, 4, 5, 3])
6、删除list种的指定位置元素
a = [[1,2,3],[4,5,6],]
del a[0]
print(a)
结果为
[[4, 5, 6]]
python要删除一个列表中的某个元素,知道这个元素是什么但不知道它的索引,就可以用list.romove
7、一个列表存了很多个子列表,将重复的子列表删除,保留唯一的行数据
使用列表的属性可以如下:
import numpy as np
data = np.random.randint(3, size=(10000,12))
data = data.tolist()
data_c = []
for i in range(data.__len__()):
if data[i] not in data_c:
data_c.append(data[i])
但是当数据量特别大时,以上方法就不合适了,这时需要使用np.unique()
import numpy as np
import time
data = np.random.randint(3, size=(10000,12))
start_time = time.time()
data_c_1 = np.unique(data, axis=0) ################################
tmp_time = time.time()
print(tmp_time-start_time)
data = data.tolist()
start_time = time.time()
data_c = []
for i in range(data.__len__()):
if data[i] not in data_c:
data_c.append(data[i])
tmp_time = time.time()
print(tmp_time-start_time)
np.unique的时间为:0.017952442169189453
list的时间为:2.0116233825683594
8、一个数组是否被包含于另一个数组
import numpy as np
y1 = np.array([[1, 2], [1, 3], [1, 2], [2, 2]])
y2 = np.array([[100, 200], [100,300], [100, 200], [200, 200]])
z = np.array([1, 2])
print((y1 == z).all(1).any())
print((y2 == z).all(1).any())