这基本上就是我想做的事情:
array = np.array() #initialize the array. This is where the error code described below is thrown
for i in xrange(?): #in the full version of this code, this loop goes through the length of a file. I won't know the length until I go through it. The point of the question is to see if you can build the array without knowing its exact size beforehand
A = random.randint(0,10)
B = random.randint(0,10)
C = random.randint(0,10)
D = random.randint(0,10)
row = [A,B,C,D]
array[i:]= row # this is supposed to add a row to the array with A,C,B,D as column values
此代码不起作用。首先它抱怨:TypeError:找不到必需的参数'object'(pos 1)。但我不知道数组的最终大小。
其次,我知道最后一行不正确,但我不知道如何在python / numpy中调用它。那我该怎么做呢?
答案 0 :(得分:1)
必须使用固定大小创建numpy数组。您可以创建一个小的(例如,一行),然后一次追加一行,但这将是低效的。没有办法有效地将numpy阵列逐渐增长到不确定的大小。您需要提前决定您希望它的大小,或者接受您的代码效率低下。根据数据的格式,您可以使用numpy.loadtxt
之类的内容或pandas中的各种函数来读取数据。
答案 1 :(得分:0)
使用一维numpy数组列表或列表列表,然后将其转换为numpy 2D数组(如果需要,可以使用更多的嵌套并获得更多的尺寸)。
import numpy as np
a = []
for i in range(5):
a.append(np.array([1,2,3])) # or a.append([1,2,3])
a = np.asarray(a) # a list of 1D arrays (or lists) becomes a 2D array
print(a.shape)
print(a)