【发布时间】:2018-08-23 12:23:36
【问题描述】:
我有一个二维整数数组。每行中间可能有 0,每行以一定数量的尾随 0 结尾。
如何将所有尾随零设置为某个整数 X?
import numpy as np
def generateTestData(N, K, INDEX_SIZE):
# Start with a flat array to easily place zeros inside
data1 = np.random.randint(0, INDEX_SIZE, N*K)
# Add zeros at random locations
idx = np.random.randint(0, N*K, int(N*K/3))
data1[idx] = 0
# Make data1 a (N,K) array
data1 = np.reshape(data1, (N,K))
# Add trailing zeros
for i in range(N):
data1[i,np.random.randint(0,K):] = 0
return data1
if __name__=='__main__':
N = 10000; K = 150; INDEX_SIZE = 500; X = -1
# Test data
data1 = generateTestData(N, K, INDEX_SIZE)
# Save a copy for the test
data2 = np.copy(data1)
for i in range(N):
for j in reversed(range(K)):
if data1[i,j] == 0:
data1[i,j] = X
else:
break
# Faster code here on 'data2'
# ...
def diff(a,b):
return np.mean(np.abs(a-b))
# Verification:
print('Diff(data1,data2) = '+str(diff(data2,data1)))
【问题讨论】:
标签: performance numpy optimization indexing scipy