我在Python中使用max(list)和找到列表的最大值和最小值min(list).但是,我想知道如何管理空列表.
例如,如果列表是一个空列表[],程序会引发'ValueError: min() arg is an empty sequence'但我想知道如何使程序只是打印'empty list or invalid input'而不是崩溃.如何管理这些错误?
我需要一种快速的方法来保持一个numpy数组的运行最大值.例如,如果我的数组是:
x = numpy.array([11,12,13,20,19,18,17,18,23,21])
Run Code Online (Sandbox Code Playgroud)
我想要:
numpy.array([11,12,13,20,20,20,20,20,23,23])
Run Code Online (Sandbox Code Playgroud)
显然我可以通过一个小循环来做到这一点:
def running_max(x):
result = [x[0]]
for val in x:
if val > result[-1]:
result.append(val)
else:
result.append(result[-1])
return result
Run Code Online (Sandbox Code Playgroud)
但我的阵列有数十万个条目,我需要多次调用它.似乎必须有一个笨拙的技巧来删除循环,但我似乎找不到任何可行的东西.另一种方法是将其写为C扩展,但似乎我要重新发明轮子.
在vim中,JSON的默认缩进是:
{
"employees": [
{ "firstName":"John" , "lastName":"Doe" },
{ "firstName":"Anna" , "lastName":"Smith" },
{ "firstName":"Peter" , "lastName":"Jones" }
]
}
Run Code Online (Sandbox Code Playgroud)
但我的期望是:
{
"employees": [
{ "firstName":"John" , "lastName":"Doe" },
{ "firstName":"Anna" , "lastName":"Smith" },
{ "firstName":"Peter" , "lastName":"Jones" }
]
}
Run Code Online (Sandbox Code Playgroud)
我做了google并尝试了一些vim-json插件,但没有一个能解决这个问题.
我有一个pandas.DataFrame称为df其具有自动生成的索引,与列dt:
df['dt'].dtype, df['dt'][0]
# (dtype('<M8[ns]'), Timestamp('2014-10-01 10:02:45'))
Run Code Online (Sandbox Code Playgroud)
我想要做的是创建一个截断为小时精度的新列.我目前正在使用:
df['dt2'] = df['dt'].apply(lambda L: datetime(L.year, L.month, L.day, L.hour))
Run Code Online (Sandbox Code Playgroud)
这很有效,所以没关系.但是,我有一个很好的方式使用pandas.tseries.offsets或创建一个DatetimeIndex或类似的.
所以,如果可能的话,是否有一些pandas魔法可以做到这一点?
memoryview的完整描述可以在这里找到:
创建一个
memoryview引用obj.obj必须支持缓冲协议.支持缓冲协议的内置对象包括bytes和bytearray.A
memoryview具有元素的概念,元素是由始发对象obj处理的原子存储单元.对于许多简单类型,例如bytes和bytearray,元素是单个字节,但是其他类型array.array可能具有更大的元素.
有没有更好的方法从"input_array"和"select_id"获取"output_array"?
我们可以摆脱range( input_array.shape[0] )?
>>> input_array = numpy.array( [ [3,14], [12, 5], [75, 50] ] )
>>> select_id = [0, 1, 1]
>>> print input_array
[[ 3 14]
[12 5]
[75 50]]
>>> output_array = input_array[ range( input_array.shape[0] ), select_id ]
>>> print output_array
[ 3 5 50]
Run Code Online (Sandbox Code Playgroud) 我无法理解的输出argmax,并argmin在与轴参数使用.例如:
>>> a = np.array([[1,2,4,7], [9,88,6,45], [9,76,3,4]])
>>> a
array([[ 1, 2, 4, 7],
[ 9, 88, 6, 45],
[ 9, 76, 3, 4]])
>>> a.shape
(3, 4)
>>> a.size
12
>>> np.argmax(a)
5
>>> np.argmax(a,axis=0)
array([1, 1, 1, 1])
>>> np.argmax(a,axis=1)
array([3, 1, 1])
>>> np.argmin(a)
0
>>> np.argmin(a,axis=0)
array([0, 0, 2, 2])
>>> np.argmin(a,axis=1)
array([0, 2, 2])
Run Code Online (Sandbox Code Playgroud)
如您所见,最大值是点(1,1),最小值是点(0,0).所以在我运行的逻辑中:
np.argmin(a,axis=0) 我期望 array([0,0,0,0]) np.argmin(a,axis=1) 我期望 array([0,0,0]) np.argmax(a,axis=0) 我期望 array([1,1,1,1]) np.argmax(a,axis=1) 我期望 array([1,1,1]) 我对事物的理解有什么问题?
说我有一个清单[1,2,3,4,5,6,7].我想找到3个最接近的数字,比方说6.5.然后返回的值将是[5,6,7].
找到一个最接近的数字在python中并不是那么棘手,可以使用
min(myList, key=lambda x:abs(x-myNumber))
Run Code Online (Sandbox Code Playgroud)
但我试图不围绕这个来找到k个最接近的数字.是否有一种pythonic方式来实现上述任务?
我以前认为inPython 中的运算符使用相等性检查来检查某些集合中元素的存在==,因此element in some_list大致相当于any(x == element for x in some_list).例如:
True in [1, 2, 3]
# True because True == 1
Run Code Online (Sandbox Code Playgroud)
要么
1 in [1., 2., 3.]
# also True because 1 == 1.
Run Code Online (Sandbox Code Playgroud)
然而,众所周知,它NaN本身并不等同.所以我期待的float("NaN") in [float("NaN")]是False.而且它False确实是.
但是,如果我们使用numpy.nan而不是float("NaN"),情况则完全不同:
import numpy as np
np.nan in [np.nan, 1, 2]
# True
Run Code Online (Sandbox Code Playgroud)
但np.nan == np.nan仍然给False!
这怎么可能?np.nan和之间有什么区别float("NaN") …
我有一个看起来像这样的DataFrame:
+----------+---------+-------+
| username | post_id | views |
+----------+---------+-------+
| john | 1 | 3 |
| john | 2 | 23 |
| john | 3 | 44 |
| john | 4 | 82 |
| jane | 7 | 5 |
| jane | 8 | 25 |
| jane | 9 | 46 |
| jane | 10 | 56 |
+----------+---------+-------+
Run Code Online (Sandbox Code Playgroud)
我想将它转换为计算属于某些二进制文件的视图:
+------+------+-------+-------+--------+
| | 1-10 | 11-25 | 25-50 | 51-100 |
+------+------+-------+-------+--------+ …Run Code Online (Sandbox Code Playgroud) python ×8
numpy ×4
dataframe ×2
pandas ×2
argmax ×1
arrays ×1
closest ×1
containers ×1
datetime ×1
javascript ×1
json ×1
list ×1
max ×1
memoryview ×1
min ×1
nan ×1
python-3.x ×1
select ×1
vim ×1