我有一个脚本可以在Twitter上搜索某个术语,然后为返回的结果打印出许多属性。
我试图只返回一个空白数组。有什么想法吗?
public_tweets = api.search("Trump")
tweets_array = np.empty((0,3))
for tweet in public_tweets:
userid = api.get_user(tweet.user.id)
username = userid.screen_name
location = tweet.user.location
tweetText = tweet.text
analysis = TextBlob(tweet.text)
polarity = analysis.sentiment.polarity
np.append(tweets_array, [[username, location, tweetText]], axis=0)
print(tweets_array)
我想要实现的行为就像......
array = []
array.append([item1, item2, item3])
array.append([item4,item5, item6])
array
现在是[item1, item2, item3],[item4, item5, item6]
。
但是在Numpy:)
答案 0 :(得分:0)
np.append
不修改数组,您需要重新分配结果:
tweets_array = np.append(tweets_array, [[username, location, tweetText]], axis=0)
检查help(np.append)
:
请注意
append
不会就地发生:分配了一个新数组 填充。
在第二个示例中,您正在调用列表的append
方法,该方法就位;这与np.append
不同。
答案 1 :(得分:0)
这是np.append
In [178]: np.source(np.append)
In file: /usr/local/lib/python3.5/dist-packages/numpy/lib/function_base.py
def append(arr, values, axis=None):
....docs
arr = asanyarray(arr)
if axis is None:
.... special case, ravels
return concatenate((arr, values), axis=axis)
在您的情况下,arr
是一个数组,从形状(0,3)
开始。 values
是一个3元素列表。这只是对concatenate
的调用。所以append
来电只是:
np.concateante([tweets_array, [[username, location, tweetText]]], axis=0)
但concatenate
适用于多个项目
alist = []
for ....:
alist.append([[username, location, tweetText]])
arr = np.concatenate(alist, axis=0)
应该也一样;更好,因为列表追加更快。或者删除嵌套级别,让np.array
将它们堆叠在新轴上,就像使用np.array([[1,2,3],[4,5,6],[7,8,9]])
一样:
alist = []
for ....:
alist.append([username, location, tweetText])
arr = np.array(alist) # or np.stack()
np.append
有多个问题。错误的名字。不会在现场采取行动。隐藏concatenate
。没有太多警告扁平化。一次限制为2个输入。等