我正在尝试用列表NaNs中所有a的索引来创建一个列表。
问题是列表ind没有填充任何内容。如果我不使用NaN,而是放置了一个像c这样的随机字符串,它就可以工作。
import numpy as np
a=[1, 2, 3, 4, np.nan, np.nan, 2, np.nan]
ind=[]
for i in range(0,len(a)):
if a[i]==float("NaN"):
ind.append(i)
print ind
我正在读取the文件中的数据,并试图按列计算平均值。虽然列的数量是固定的,但行数却不是固定的。因此,我首先读取所需的行,然后将它们设置为一个列表,然后形成一个列表的numpy数组。但不起作用。
import csv
import numpy
读取(循环遍历每个文件并找到匹配项,然后将其追加):
with open(input_file, mode='r') as f:
reader = csv.reader(f, delimiter=';')
for row in reader:
pass
# matchin al
在numpy中,有没有一种很好的惯用方法来测试二维数组中的所有行是否相等?
我可以做像这样的事情
np.all([np.array_equal(M[0], M[i]) for i in xrange(1,len(M))])
这似乎混合了python列表和numpy数组,这很难看,而且可能也很慢。
有没有更好/更整洁的方法?
我是个编程新手,在如何替换python列表中的字符串时遇到了麻烦。
# I have
a = [ 200, "NaN", 230 , 300]
# I want
a = [200, np.nan, 230, 300]
在列表a中查找并替换该字符串。
使用python和numpy:
是否可以使用for循环将"NaN"更改为np.nan?
尝试使用函数进行计算时出现错误:
can't multiply sequence by non-int of type 'float'
,我发现了一些我也不明白的东西。我张贴这个问题主要是作为MSeifert的扩展,因为我们的观察似乎都有一个共同的原因。
早些时候,涉及对包含nan值的序列使用itertools.groupby:
return max((sum(1 for _ in group) for key, group in groupby(sequence) if key is nan), default=0)
然而,我在MSeifert的问题上看到了,它显示了一种替代的方法:
return max((sum(1 for _ in group) for key, group in groupby(sequence, n
在字符串数组中找不到使用numpy的nan条目,我的代码是:
for x in X_cat:
if x == np.nan:
print('Found')
我知道列表中有2个nan条目,但代码运行时不会打印任何内容。同样,如果我用' nan‘替换np.nan,我的最终目标是用最常见的字符串替换nan。
在我的代码中,我有一个2D numpy.ndarray,其中填充了_numpy.str__值。我试图使用select方法将值"null“更改为"nan”。问题是这个方法会引发一个FutureWarning。
我读过。根据这里的建议,我试图不将Python字符串与Numpy字符串进行比较,而是在开始时将Python字符串转换为Numpy字符串。很明显这没什么用,我在找你的建议。
我想避免关闭警告(因为它在链接中)。在我看来,这是一种非常肮脏的做法。
我的代码片段:
import pandas_datareader as pd
import numpy as np
import d
import numpy as np
我有两个数组:
a = np.array([1,2,3,np.nan,5])
b = np.array([3,2,np.nan,5,4])
我想比较一下这两个数组中的元素&得到一个布尔值列表。当有nan参与比较时,我希望得到nan。预期结果:
[False, False, nan, nan, True]
我已经使用获得了所需的输出
[eacha>eachb
if ~np.isnan(eacha) and ~np.isnan(eachb)
else np.nan
for eacha, eachb in zip(a,b)]
有没有更好
我有一个numpy.ndarray,如下所示。这是talib.RSI的输出,是numpy.ndarray的类型。我想得到滚动(windows=3).max()和滚动(window=3).min的列表
怎么做?
[ nan nan nan nan nan
nan nan nan nan nan
nan nan nan nan 56.501182
对于panda数据帧,有很好的解决方案。但由于我主要使用numpy数组,我必须创建新的熊猫DataFrame对象,计算并转换回numpy数组,如下所示:
nomDF=pd.DataFrame(x_nominal) #Convert np.array to pd.DataFrame
nomDF=nomDF.apply(lambda x:x.fillna(x.value_counts().index[0])) #replace NaN with most frequent in each column
x_nominal=nomDF.values #convert back pd.DataFram
我有多个相同大小的列表(或numpy数组),我想返回一个相同大小的数组,每个点都有最大值。
例如,
A = [[0,1,0,0,3,0],[1,0,0,2,0,3]]
B = [[1,0,0,0,0,4],[0,5,6,0,1,1]]
C = numpy.zeros_like(A)
for i in xrange(len(A)):
for j in xrange(len(A[0])):
C[i][j] = max(A[i][j],B[i][j])
结果是C = [[1,1,0,0,3,4],[1,5,6,2,1,3]]
这可以很好地工作,但效率不是很高--特别是对于我拥
我正在从CSV文件中创建一个Numpy数组,它确实可以工作,但是在for循环的末尾,它给出了上述错误。
我有一个5列的数据集,并且一直试图创建一个Numpy数组。但是,一旦我将代码更改为:
values=[float(x) for x in line.split(',')[0:]]
输入下面的代码:它给了我以下错误:
File "CNN_ambPressure.py", line 14, in <module>
values=[float(x) for x in line.split(',')[0:]]
File "CNN_a
版本有python==3.6.6,pandas==0.23.0,numpy==1.15.0。我想要一个DataFrames列表的交集。
例如,
x = pd.DataFrame(
np.arange(6).reshape((3, 2)),
index=["a", "b", "c"],
columns=["q", "e"]
)
y = x - 1
预期回报是np.logical_and(x,y)返回的
q w
a False False
b True Tr