我是python和numpy的新手,很抱歉,如果这个问题很明显。在互联网上看,我找不到正确的答案。 我需要在python中创建一个未知大小的2维(a.ndim - > 2)数组。可能吗?我已经找到了一种方法,可以通过一个列表通过一个维度,但是没有运气的二维。
例如
for i in range(0,Nsens):
count=0
for l in range (0,my_data.shape[0]):
if my_data['Node_ID'][l]==sensors_name[i]:
temp[count,i]=my_data['Temperature'][l]
count=count+1
else:
count=count
其中temp是我需要初始化的数组。
答案 0 :(得分:2)
这显示了一个相当高的性能(虽然比初始化到精确大小要慢)在numpy中填充未知大小的数组:
data = numpy.zeros( (1, 1) )
N = 0
while True:
row = ...
if not row: break
# assume every row has shape (K,)
K = row.shape[0]
if (N >= data.shape[0]):
# over-expand: any ratio around 1.5-2 should produce good behavior
data.resize( (N*2, K) )
if (K >= data.shape[1]):
# no need to over-expand: presumably less common
data.resize( (N, K+1) )
# add row to data
data[N, 0:K] = row
# slice to size of actual data
data = data[:N, :]
适应您的情况:
if count > temp.shape[0]:
temp.resize( (max( temp.shape[0]*2, count+1 ), temp.shape[1]) )
if i > temp.shape[1]:
temp.resize( (temp.shape[0], max(temp.shape[1]*2, i+1)) )
# now safe to use temp[count, i]
您可能还想跟踪实际数据大小(最大计数,最大值i)并稍后修剪数组。
答案 1 :(得分:0)
答案 2 :(得分:0)
鉴于您的后续评论,听起来您正在尝试执行以下操作:
arr1 = { 'sensor1' : ' ', 'sensor2' : ' ', 'sensor_n' : ' ' } #dictionary of sensors (a blank associative array)
#take not of the curly braces '{ }'
#inside the braces are key : value pairs
arr1['sensor1'] = 23
arr1['sensor2'] = 55
arr1['sensor_n'] = 125
print arr1
for k,v in arr1.iteritems():
print k,v
for i in arr1:
print arr1[i]
Python Tutorials on Dictionaries应该能够为您提供所寻求的洞察力。